构建echo服务路由时,请求和响应的构建需要注意一点,就是所有请求必须基于一个结构体去表示,所有的入参都要使用结构体去表示,那怕只有一个参数,除非是没有参数的get请求。
好处:
首先这样做的好处在于在不看api文档的情况下就可以明确了请求的结构和响应的结构,并且,当其结构入参或者出参的时候需要拓展时,可以通过结构体组合的方式去拓展结构体本身的结构,而不影响原本的请求结构。然后在处理的过程中直接交给Validator去校验参数是否为空。
以下是操作实例:
api包下的请求和响应结构
package api
type FetchEventRegReq struct {
Id int64 `validate:"required"`
}
type FetchEventRegRes struct {
Registrations []Registrations `json:"registrations"`
}
type Registrations struct {
Event RegEvent `json:"event"`
SessionIds []int64 `json:"session_ids"`
}
type RegEvent struct {
ID int64 `json:"id"`
Name string `json:"name"`
Slug string `json:"slug"`
Date *Date `json:"date"`
OrganizerId int64 `json:"-"`
Organizer RegOrganizer `json:"organizer" gorm:"-"`
}
type RegOrganizer struct {
ID int64 `json:"id"`
Name string `json:"name"`
Slug string `json:"slug"`
}
2024/1/3大约 1 分钟