招摇:参数一直显示为查询字符串参数

我有以下处理程序


// 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

}

但我真的不喜欢这样,宁愿只记录我的请求参数。


关于如何正确记录我的结构以便它显示为请求正文参数而不是查询字符串的任何线索?


紫衣仙女
浏览 61回答 1
1回答

阿晨1998

当您使用swagger:parameters注解时,go-swagger 将该结构视为 API 端点的所有参数的描述,包括标头、查询参数和正文。因此,您需要一个定义所有这些类型参数的结构,以及另一个定义实际主体结构的结构。因此,据我所知,没有办法摆脱包含主体的第二个结构,因为主体不是 API 的唯一参数。
打开App,查看更多内容
随时随地看视频慕课网APP