登录
首页 >  Golang >  Go问答

Swagger如何描述JSON主体参数

来源:stackoverflow

时间:2024-04-17 22:27:32 409浏览 收藏

从现在开始,我们要努力学习啦!今天我给大家带来《Swagger如何描述JSON主体参数》,感兴趣的朋友请继续看下去吧!下文中的内容我们主要会涉及到等等知识点,如果在阅读本文过程中有遇到不清楚的地方,欢迎留言呀!我们一起讨论,一起学习!

问题内容

我正在尝试向我的 rest api(gin 框架)添加文档,并且在尝试构建 json 主体参数时遇到了一些问题。

目前我有以下api描述操作:

// @summary logins a user
// @id      login-user
// @accept  json
// @produce json
// @param   email       formdata string true "user email"
// @param   password    formdata string true "user password"
// @success 200 {object} gin.h  "login response"
// @failure 400 {object} gin.h  "error response"
// @router  /login [post]
func (server *server) handleloginuser() gin.handlerfunc {
    return func(ctx *gin.context) {
        var req loginuserrequest
        if err := ctx.shouldbindjson(&req); err != nil {
            ctx.json(http.statusbadrequest, utils.errorresponse(err))
            return
        }

        // some code

        ctx.json(http.statusok, response)
    }
}

当我通过 swagger ui 提交数据时,出现以下错误:

{
"error": "invalid character 'e' looking for beginning of value"
}

此外,这是生成的 curl:

curl -x 'post' \
  'http://localhost:8080/api/login' \
  -h 'accept: application/json' \
  -h 'content-type: application/json' \
  -d 'email=my%40email.com&password=password'

值得一提的是,每当我在 postman 中使用 body raw json 提交相同的数据时,它都会起作用。这就是通常的 json 的样子(还有 loginuserrequest):

{
   "email": "[email protected]",
   "password": "password"
}

由于我是 swagger 新手,所以我很确定它与 swagger 的[属性文档]上定义的 emailpassword param type 有关。

那么,我应该如何更好地描述 loginrequest json 正文?


正确答案


这很简单,但我猜他们在文档中省略了这一点。我刚刚更改了参数如下:

// @Param   loginUserRequest body loginUserRequest true "user password"

然后,当运行 swag init --parsedependency --parseinternal --parsedepth 1 时,它就可以工作了。

到这里,我们也就讲完了《Swagger如何描述JSON主体参数》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>