我有以下处理程序
// Create database
// swagger:route POST /databases createDatabase
//
// Create database
//
// Security:
// oauth2:
//
// responses:
// 202: Database
// 401: Error
// ...
func (h Handler) Create(c *gin.Context) {
var request CreateDatabaseRequest
if err := handler.DataBinder(c, &request); err != nil {
_ = c.Error(err)
return
}
...
}
以及我通过请求主体发布的以下结构
// CreateDatabaseRequest
// swagger:parameters createDatabase
// in: body
// required: true
//
// Create database input parameter
type CreateDatabaseRequest struct {
Name string `json:"name" binding:"required"`
GroupId uint `json:"groupId" binding:"required"`
}
但是当我生成文档时,CreateDatabaseRequeststruct的属性显示为两个单独的查询参数。
我可以通过创建一个额外的伪结构来修复它,如下所定义
// swagger:parameters createDatabase
type _ struct {
// Create database parameter
// in: body
// required: true
Body database.CreateDatabaseRequest
}
但我真的不喜欢这样,我宁愿把我的请求参数记录在适当的位置。
关于如何正确地记录结构,使其显示为请求体参数而不是查询字符串,有什么线索吗?
当您使用swagger:parameters
注释时,go-swager将该结构视为API端点的所有参数的描述,其中包括头、查询参数和主体。因此,您需要一个定义所有这些类型参数的结构,以及另一个定义实际主体结构的结构。因此,据我所知,没有办法摆脱包含主体的第二个结构,因为主体不是API的唯一参数。