swagger:参数不断显示为查询字符串param



我有以下处理程序

// 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的唯一参数。

最新更新