1. swagger.go文件
使用_导入所有包含文档注解的包
package main import ( _ "github.com/teambition/swaggo/example/pkg/api" ) // @Version 1.0.0 // @Title Swagger Example API // @Description Swagger Example API // @Schemes http,wss // @Host 127.0.0.1:3000 // @BasePath /api // @Name teambition // @Contact [email protected] // @URL http://teambition.com // @TermsOfServiceUrl http://teambition.com/ // @License Apache // @LicenseUrl http://teambition.com/ // @Consumes json,xml // @Produces json,xml
@Version API版本号
@Title 服务名称
@Description 服务描述
@Schemes 服务协议(http,websockes)
@Host 可用服务器地址,用于测试
@BasePath API路径的前缀
@Name 作者名字
@Contact 作者联系方式
@URL 作者个人页
@TermsOfServiceUrl 服务条款说明地址
@License 开源协议
@LicenseUrl 协议地址
@Consumes 方法接收参数的类型,多选用,隔开,包括(json,xml,plain,form,formData,stream)
@Produces 方法返回参数的类型,包括(json,xml,plain,html,form,formData,stream)
2. Controller注解
// @Private reason // @Name Controller // @Description test apis type Controller struct { }
@Private 存在表示不公开该Controller下的所有API文档
reason 私有说明,可选值
@Name 资源名称
@Description 资源描述
3. Handler注解
// @Private reason // @Title Hello // @Summary say hello // @Description this is a method to say hello // @Deprecated true // @Consumes json // @Produces json // @Param some_id path int true "Some ID" // @Param offset query int true "Offset" // @Param limit query int true "Limit" // @Success 200 StructureWithEmbededPointer "Success!" // @Failure 400 APIError "We need ID!!" // @Failure 404 APIError "Can not find ID" // @Router GET /say/hello/{some_id} func (c *Controller) Hello(rw http.ResponseWriter, req *http.Request) { }
@Private 存在,表示不公开该API文档
@Title 方法名
@Summary 方法简介
@Description 方法的详细描述
@Deprecated 该接口不再使用
@Consumes 方法接收参数的类型,多选用,隔开,包括(json,xml,plain,form,formData,stream)
@Produces 方法返回参数的类型,包括(json,xml,plain,html,form,formData,stream)
@Param 参数列表,用空格隔开
// @Param some_id path int true "Some ID" 6
some_id 参数名称
path 参数类型,包括(path:路径参数,query:请求参数,header:请求头,form:表单,body:请求体)
int 数据类型,支持Golang原生类型(int,string,bool...),支持自定义类型(your_package.YourType)
true 参数是否必须,可选值,使用-占位
"Some ID" 参数的简要描述,可选值,使用-占位
6 默认值,可选值
@Success 成功返回示例,用空格隔开
// @Success 200 StructureWithEmbededPointer "Success!"
200 http返回码
StructureWithEmbededPointer 返回数据类型,支持Golang原生类型([]int,int,string,bool...),支持自定义类型(your_package.YourType)
"Success!" 结果描述,必须
@Failure 失败返回示例,用空格隔开
@Router 路由定义,用空格隔开
// @Router GET /say/hello/{some_id}
GET 请求方法,支持(GET,POST,PUT,PATCH,DELETE,HEAD,OPTIONS)
/say/hello/{some_id} 路由路径, {some_id}在**@Param**中定义
4. Go结构体标签
type SimpleStructure struct { Id float32 `json:"id" swaggo:"true,my id,19"` Name string `json:"name" swaggo:"true,,xus"` Age int `json:"age" swaggo:"true,the user age,18"` CTime time.Time `json:"ctime" swaggo:"true,create time"` Sub subpackage.SimpleStructure `json:"sub" swaggo:"true"` I TypeInterface `json:"i" swaggo:"true"` }
swaggo:"true,dfsdfdsf,19" swagger文档相关标签,用,隔开
true 是否必须,可选值,缺省用,隔开
my id 文档描述,可选值,缺省用,隔开
19 默认值,可选值,缺省用,隔开
转载地址:
https://github.com/teambition/swaggo/wiki/Declarative-Comments-Format#1-swaggergo文件