Go开源宝藏Go-Swagger 自动生成 api 接口文档

Posted 小生凡一

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go开源宝藏Go-Swagger 自动生成 api 接口文档相关的知识,希望对你有一定的参考价值。

写在前面

  • 安装
go get -u github.com/swaggo/swag/cmd/swag

Go-Swagger 可以用来自动生成接口文档,减少大家编写接口文档的时间。

1. 使用

先下载驱动

go get -u github.com/swaggo/swag/cmd/swag
  1. 头部导入
  • 放在main函数中
// @title ToDoList API
// @version 0.0.1
// @description This is a sample Server pets
// @securityDefinitions.apikey ApiKeyAuth
// @name FanOne
// @BasePath /api/v1

  1. 在终端运行
swag init -g main.go
  1. 会发现新的文件
  2. 在路由层引入
import (
	swaggerFiles "github.com/swaggo/files"
	ginSwagger "github.com/swaggo/gin-swagger"
	_ "to-do-list/docs" // 这里需要引入本地已生成文档
)

  1. 开启swag
	r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))

  1. 然后就可以在api里面进行写注释了

  1. 注意每次写完要重新运行
swag init -g main.go

再重新启动程序

  1. 就会在这个网址展示出来接口文档了!

我的是3000端口,所以是这个。

http://localhost:3000/swagger/index.html

2. API 注释介绍

// @summary 服务连接校验 --> 接口简介
// @Description 服务初始连接测试 --> 接口描述
// @Accept json   --> 请求接收类型
// @Produce json  --> 请求返回类型
// @Produce string  --> 请求返回类型 (可以设置多条)
// @Params userId query string true "用户id" minlength(3) maxlength(100)
// Success 200 {object} Response --> 成功后返回数据结构
// Failure 400 {object} ResponseError --> 失败后返回数据结构
// Failure 404 {object} ResponseError
// Failure 500 {object} ResponseError
// @Router /check [get] --> 路由地址及请求方法

3. 请求部分

  • Params

格式: [ 参数名称 参数类型 数据类型 是否必须 备注 限制属性 ] 空格分割

@Params user_name query string true "用户姓名" minlength(3) maxlength(100)
@Params password query string true "密码" minlength(7)
@Params status query integer false "状态:0 1" Enums(0, 1) defualt(0)
  • 参数可用类型 [param type]

    • query
    @Params password query string true "密码" minlength(7)
    
    • path
    @Params id path uint true "用户id" minlength(1)
    
    • header
    @Params authorization header string true "鉴权" 
    
    • body
    • formDate
  • 数据可用类型 [data type]

    • string(string)
    • integer(int, uint, uint32, uint64)
    • boolean(bool)
    • struct
  • 可配置属性

参数属性
defualt *参数默认值
maximum number最大值
mininum number最小值
maxLength integer最大长度
minLength integer最小长度
enums [*]枚举类型

4. 响应部分

  • 定义响应结构体
package serializer

type ResponseUser struct {
	Status int `json:"status" example:"200"`
	Data User `json:"data"`
	Msg string `json:"msg" example:"ok"`
	Error string `json:"error" example:""`
}

type ResponseTask struct {
	Status int `json:"status"`
	Data Task `json:"data"`
	Msg string `json:"msg"`
	Error string `json:"error"`
}
  • success 成功响应 格式: [ 状态码 {数据类型} 数据类型 备注 ]
// @Success 200 {object} serializer.ResponseUser "成功"
  • failure 失败响应 格式: [ 状态码 {数据类型} 数据类型 备注 ]
// @Failure 500 {object} serializer.ResponseError "失败"

以上是关于Go开源宝藏Go-Swagger 自动生成 api 接口文档的主要内容,如果未能解决你的问题,请参考以下文章

从 go-swagger UI 访问 API 时 Golang 中的 CORS 问题

语言实践Go语言文档自动化之go-swagger

Go开源宝藏Go-Doc 自动生成项目结构目录

Go开源宝藏Go语言操作 MongoDB

Go开源宝藏Go 语言操作 Redis

Go开源宝藏 go-cron 定时任务