swagger:parameters 继续显示为查询字符串参数

swagger:parameters keep showing as query string 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
    }

    ...

}

以及我通过请求正文 post 的以下结构

// 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-swagger 将该结构视为 API 端点的所有参数的描述,其中包括 headers、查询参数,以及 body。因此,您需要一个定义所有这些类型参数的结构,以及另一个定义实际 body 结构的结构。因此,据我所知,没有办法摆脱包含 body 的第二个结构,因为 body 不是 API.[= 的唯一参数。 11=]