go-swagger 是一个 Golang 的第三方库,是一个 Swagger 2.0(aka OpenAPI 2.0)的 Golang 实现。
- Github:https://github.com/go-swagger/go-swagger
go-swagger 内含了许多包,其中关键得有:
- go-openapi:OpenAPI 的 Golang 实现。
- govalidator:可以对 Golang 的字符串、结构体以及集合进行校验和检查的工具包。
go-swagger 还内含了许多 Swagger 工具库,安装 swagger 指令:
go get -u github.com/go-swagger/go-swagger/cmd/swagger
swagger 指令支持:
- Serve specification UI,为 OpenAPI Specification 提供一个具有 UI 界面的服务器。
- Validate a specification,验证 OpenAPI Specification 文件进行检查和校验。
- Generate an API server,通过 OpenAPI Specification 生成服务端。
- Generate an API client,通过 OpenAPI Specification 生成客户端。
- Generate a spec from source,通过源码生成 OpenAPI Specification 文档。
- Generate a data model,生成数据结构。
- Transform specs,转换规范。
- Compare specs,比较规范。
swagger generate 指令会找到 main.go 文件,然后遍历所有源码文件,解析源码中与 Swagger 相关的注释,然后自动生成 swagger.json 文件,例如:
// Package classification User API.
//
// The purpose of this service is to provide an application
// that is using plain go code to define an API
//
// Host: localhost
// Version: 0.0.1
//
// swagger:meta
package service
然后在命令行里执行:
swagger generate spec -o ./swagger.json
当 swagger.json 就绪后,可以直接运行 swagger serve 指令启动 UI 程序:
swagger serve -F=swagger swagger.json
Generate an API server
有了 swagger.json 或 swagger.yaml 之后就可以生成 API server 了。
mkdir myapi
cd myapi
swagger generate server -f ~/myapi.yaml -A myapi
CGO_ENABLED=1 go build -o dist/myapi -a -gcflags "-N -l" ./cmd/myapi-server;
./dist/myapi
参考文档
https://juejin.im/post/6844903609390333965
https://blog.csdn.net/benben_2015/article/details/100538074