go-swagger-api应用
形而上 Lv4

该项目包含Swagger 2.0的golang实现 (又名OpenAPI 2.0)。 它提供了与swagger规范一起工作的工具。

swagger 是RESTful API的简单而强大的实现。

github:https://github.com/go-swagger/go-swagger

文档:https://goswagger.io/go-swagger/

聊聊Swagger

拥有全球最大的API工具生态系统,几乎所有现代编程语言和部署环境中都支持Swagger。

使用支持Swagger的API,您可以获得交互式文档、生成客户端SDK和发现服务。

Swagger帮助Apigee,Getty Images,Intuit,LivingSocial,McKesson,Microsoft,Morningstar和PayPal等公司使用RESTful api构建最佳服务。现在在2.0版本中,Swagger比以往任何时候都更加易用。它是完全开源的软件。

特点

go-swagger为go社区带来了一整套功能齐全、高性能的API组件,可与Swagger API配合使用: 开发服务端、客户端和数据模型。

  • 按照swagger规范生成服务端代码
  • 按照swagger规范生成客户端代码
  • 按照swagger规范 (alpha阶段) 生成CLI (命令行工具)
  • 支持jsonschema和swagger提供的大多数功能,包括多态
  • 从带注释的go代码生成swagger规范
  • 使用swagger规范的其他工具
  • 出色的自定义功能,具有自带的扩展和可自定义的模板

我们对代码生成的理念是:生成惯用的,快速的go代码,它与golint,go vet等兼容得很好。

安装

从源安装

按章支持命令,docker,源安装,这里只记录下我用源码安装的操作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
> go version
go version go1.23.1 windows/amd64

> go install github.com/go-swagger/go-swagger/cmd/swagger@latest
...
> swagger.exe version
version: v0.31.0

# 查看环境变量
> go env
# 找到 GOPATH
GOPATH=C:\Users\hxd\go
# 进入目录,可以看到 swagger.exe 可执行文件,已经安装到gopath了
# 后续这个二进制可执行文件可以拷贝到项目中使用,统一版本避免版本问题

swagger工具说明:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Usage:
swagger [OPTIONS] <command>

Swagger tries to support you as best as possible when building APIs.

It aims to represent the contract of your API with a language agnostic description of your application in json or yaml.

Application Options:
-q, --quiet silence logs
--log-output=LOG-FILE redirect logs to file

Help Options:
-h, --help Show this help message

Available commands:
diff diff swagger documents
expand expand $ref fields in a swagger spec
flatten flattens a swagger document
generate generate go code
init initialize a spec document
mixin merge swagger documents
serve serve spec and docs
validate validate the swagger document
version print the version

具体怎么用可以参考官网。

生成服务端

参考:https://goswagger.io/go-swagger/generate/server/

1
2
3
4
5
6
7
8
9
# 生成描述文件
swagger.exe init spec

# 初始化go mod
go mod init mlss-cc-service

# git初始化
git init

如图,我新建了一个项目,按照这个目录来构建应用
项目

把swagger.exe放到项目里,编写好swagger.yaml 执行swagger生成代码

1
.\pkg\restapi\swagger\swagger.exe generate server -m ../models -f .\pkg\restapi\swagger\swagger.yaml -t .\pkg\restapi

新建启动文件,启动:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
D:\goworkspace\mlss-cc-service> cd .\cmd\mlss-cc-go\     
PS D:\goworkspace\mlss-cc-service\cmd\mlss-cc-go> ls


目录: D:\goworkspace\mlss-cc-service\cmd\mlss-cc-go


Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2024/3/26 16:34 1356 main.go


PS D:\goworkspace\mlss-cc-service\cmd\mlss-cc-go> go run .\main.go
Serving open API swagger at http://127.0.0.1:56434

已经开源到仓库
https://gitee.com/deepter/mlss-cc-service

https://gitee.com/deepter/mlss-cc-a

  • 本文标题:go-swagger-api应用
  • 本文作者:形而上
  • 创建时间:2024-05-17 14:23:45
  • 本文链接:https://deepter.gitee.io/2024_05_17_go_swagger/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!