swagger

命令

hade 使用 swaggoopen in new window 集成了 swagger 生成和服务项目。并且封装了 ./hade swagger 命令。

[~/Documents/workspace/hade_workspace/demo5]$ ./hade swagger
swagger operator

Usage:
  hade swagger [flags]
  hade swagger [command]

Available Commands:
  gen         generate swagger file, contain swagger.yaml, doc.go
  serve       use gen serve

Flags:
  -h, --help   help for swagger

Use "hade swagger [command] --help" for more information about a command.
  • gen // 生成swagger文件
  • serve // 提供swagger服务

注释

hade 使用 swaggoopen in new window 来实现注释生成 swagger 功能。

全局注释在文件 app/http/swagger.go 中:

// Package http API.
// @title hade
// @version 1.0
// @description hade测试
// @termsOfService https://github.com/swaggo/swag

// @contact.name yejianfeng
// @contact.email yejianfeng

// @license.name Apache 2.0
// @license.url http://www.apache.org/licenses/LICENSE-2.0.html

// @host localhost:8989
// @BasePath /api
// @query.collection.format multi

// @securityDefinitions.basic BasicAuth

// @securityDefinitions.apikey ApiKeyAuth
// @in header
// @name Authorization

// @x-extension-openapi {"example": "value on a json format"}

package http

接口注释请写在各自模块的 api.go 中

// Demo godoc
// @Summary 获取所有用户
// @Description 获取所有用户
// @Produce  json
// @Tags demo
// @Success 200 array []UserDTO
// @Router /demo/demo [get]
func (api *DemoApi) Demo(c *gin.Context) {
	users := api.service.GetUsers()
	usersDTO := UserModelsToUserDTOs(users)
	c.JSON(200, usersDTO)
}

swagger 注释的格式和关键词可以参考:swaggoopen in new window

生成

使用命令 ./hade swagger gen

[~/Documents/workspace/hade_workspace/demo5]$ ./hade swagger gen
2020/09/16 19:57:33 Generate swagger docs....
2020/09/16 19:57:33 Generate general API Info, search dir:./app/http/
2020/09/16 19:57:33 Generating demo.UserDTO
2020/09/16 19:57:33 create docs.go at /Users/Documents/workspace/hade_workspace/demo5/app/http/swagger/docs.go
2020/09/16 19:57:33 create swagger.json at /Users/Documents/workspace/hade_workspace/demo5/app/http/swagger/swagger.json
2020/09/16 19:57:33 create swagger.yaml at /Users/Documents/workspace/hade_workspace/demo5/app/http/swagger/swagger.yaml

在目录 app/http/swagger/ 下自动生成swagger相关文件。

服务

可以使用命令 ./hade swagger serve 启动当前应用的 swagger ui 服务。

[~/Documents/workspace/hade_workspace/demo5]$ ./hade swagger serve
swagger success: http://0.0.0.0:8069/swagger/index.html
if you want to replace, remember use command: swagger gen

TIP

如果你的 swagger 服务已经启动,更新 swagger 只需要重新运行 ./hade swagger gen 就能更新。因为 swagger 服务读取的是生成的 swagger.json 这个文件。

服务端口,我们也可以通过配置文件 config/[env]/swagger.yaml 中的配置

url: http://127.0.0.1:8069

来配置swagger serve 启动的服务。

Last Updated:
Contributors: yejianfeng