最近在集成go-swagger的时候卡在了post的请求体上,查看官方文档发现这方面的内容几乎是空白的,经过全网搜索终于找到了将post请求定义为JSON的方法。

一开始看文档的时候发现官方的文档太简略了关于注解的声明的例子就只有几个。

加上之前也没有用过swagger,然后就以为 swagger:parameters 就是我想要的注解。结果生成了文档后发现 parameter注解默认是从query里获取参数也就是网址中,导致进入web界面无法对端口进行测试。

后来从网上找到一个解决方案

就是使用 in: body的方法,但是缺点也很明显, 必须在结构体内再嵌入一个 Body 结构

这个显然不满足要求,于是乎经过一番查找终于发现了解决方案,搞不懂官方为啥不写在例子中。方法就是


  1. 定义 model 使用 swagger:model 注解
  2. 然后在 route 中 定义 parameter 并引用 Model, 注意不是$ref而是 type

结构定义例子

route 例子

效果

也可以到我的项目去直接运行看看哦, 也可参考下各个注解的使用方法。