【gin】【swag】
@
写在前面
gin swagger
安装依赖
go install github.com/swaggo/swag/cmd/swag@latest
go get -u github.com/swaggo/gin-swagger
go get -u github.com/swaggo/files
添加注释
// @BasePath /api/v1
// PingExample godoc
// @Summary ping example
// @Schemes
// @Description do ping
// @Tags example
// @Accept json
// @Produce json
// @Success 200 {string} Helloworld
// @Router /example/helloworld [get]
func Helloworld(g *gin.Context) {
g.JSON(http.StatusOK,"helloworld")
}
生成 api 文件
swag init
路由设置
package main
import (
"github.com/gin-gonic/gin"
docs "github.com/your-self-go-project-name/docs" // 注意这个 docs 目录需要填写你自己项目的真实路径
swaggerfiles "github.com/swaggo/files"
ginSwagger "github.com/swaggo/gin-swagger"
"net/http"
)
func main() {
r := gin.Default()
docs.SwaggerInfo.BasePath = "/api/v1" // api 文件路径
v1 := r.Group("/api/v1")
{
eg := v1.Group("/example")
{
eg.GET("/helloworld",Helloworld)
}
}
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerfiles.Handler))
r.Run(":8080")
}
注释
编写注释
在Gin的路由处理器函数上方,编写符合Swag规范的注释。以下是注释的基本组成部分:
// @Summary 摘要说明
// @Description 详细描述
// @Tags 标签
// @Accept 输入格式
// @Produce 返回格式
// @Param 参数名 参数位置 参数类型 是否必须 "参数描述"
// @Success 成功返回状态码 {返回类型} 返回数据结构类型 "成功返回信息描述"
// @Failure 失败返回状态码 {返回类型} 返回数据结构类型 "失败返回信息描述"
// @Router 路由 [HTTP方法]
以下将详细描述在配合Gin使用Swagger文档时你提及的特定注释。
@Description
这一行提供接口的详细描述,可以是多行,支持Markdown语法,让你的API描述更加丰富和详细。
@Tags
用于对API进行分类,这些标签在Swagger UI中会用于分组展示。比如,可能会根据资源(如users, orders)或行为(authentication, statistics)来分类。
@Accept
指定API可以处理的MIME类型,常见的有json, xml, plain, html, mpfd等。该值与请求头Content-Type相关。
@Produce
指定API能够返回的MIME类型,这通常与响应的Content-Type头信息相关。常见的值有json, xml, plain, html等。
@Param
这个注释是用来描述API接口的参数信息:
参数名(name):参数的名称。
参数位置(in):参数的位置,可选值有:
path:路径参数,例如/users/{id}中的id。
query:查询参数,附加在URL后面,例如/users?role=admin中的role。
header:请求头参数,如带有认证信息的Authorization字段。
body:请求体参数,通常用于POST或PUT请求中的数据。
formData:表单数据,经常用于上传文件。
参数类型(type):参数的数据类型,如string, int, bool, []string等。
是否必须(required):这表明参数是否为必须,取值为true或false。
参数描述(data description):一个描述该参数的文本信息。
@Success & @Failure
这两个注释分别描述了API响应成功或失败时的返回情况:
成功或失败的HTTP状态码(如200, 400, 500)。
返回类型,一般为object(用于单个对象)、array(用于对象数组)或string(错误信息或简单文本)。
返回数据结构类型,指向定义的结构体或基本数据类型,swag会根据这些信息在文档中生成和展示模型结构。
成功或失败的信息描述,通常是操作成功或错误时的消息文本。
@Router
这个注释描述了路由信息:
路由(path): API的路径。
HTTP方法(method): 请求使用的HTTP方法,如GET, POST, PUT, DELETE等。
param
Swagger是一个工具套件,用于生成、展示和消费OpenAPI(以前称为Swagger)规范的API文档。Go语言中可以配合Gin框架使用swaggo库来自动生成API文档。
在使用gin框架,整合swaggo生成API文档时,param是一个重要的注释关键字,它用于描述API接口的参数信息。
param注释的格式如下:
// @Param 参数名 参数位置 参数类型 是否必须 "参数描述"
其中:
参数名(name):表示参数的名称,在HTTP请求中作为键名出现。
参数位置(paramType):表示参数的位置,可以是path(路径参数)、query(查询字符串参数)、header(HTTP头参数)、body(请求体)、formData(用于上传文件)。
参数类型(dataType):表示参数的Go类型或者特殊类型,如string、int、bool、[]string等。
是否必须(required):表示此参数是否必需填写,true代表必需,false代表可选。
参数描述(description):这是对参数的描述信息,确保API的使用者能够理解。
例子:
// @Summary 添加新用户
// @Description 添加一个新用户
// @Tags users
// @Accept json
// @Produce json
// @Param name query string true "用户的姓名"
// @Param age query int false "用户的年龄"
// @Success 200 {object} User
// @Failure 400 {string} string "无法解析请求参数"
// @Router /user [post]
func addUser(c *gin.Context) {
// ...
}
这个API的param注释说明了有两个查询字符串参数name和age,其中name是必须的,age是可选的。
访问
http://host:port/sagger/index.html
源码分析
gin-swagger
参考资料
基础/标准库/第三方库
golang 导航
编程规范
算法|面试
项目
免责声明:
本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。侵删请致信