Swagger 框架核心的框架包含三个核心工具:Swagger Editor、Swagger Codegen 和 Swagger UI。本文介绍如何使用这三个工具来快速构建 Spring Boot Server。
Editor 用于编辑 Swagger 规格文档,并实时生成对应的 RESTful 接口文档。
Codegen 用于将设计好的 Swagger 规格文档生成不同框架的代码,包括服务端和客户端。
UI 用于将 Swagger 规格文档进行显示以及与 API 资源进行交互。
那这三个工具应该如何使用可能困扰着一些刚接触 Swagger 的开发人员,本文简单介绍一下如何将 Swagger 用于 Spring Boot 框架。
首先,Editor 和 Codegen 这两个工具个人认为并不需要自己安装,直接在 Swagger 的 Online Editor 进行 API 的设计和编辑,设计好之后使用界面上侧的 Generate Server
选择相应的框架进行生成,如图:
将生成的包解压,并将src/main/resources/application.properties 中的 server.port
改为一个空闲的端口号(这里假设为8181)。使用 maven 生成可执行 jar 包。
浏览器访问 http://localhost:8181/v1/swagger-ui.html
即可使用 Swagger UI 来消费你的 API 了, 当然,对于任何访问,这个生成的服务器并没有做任何处理,仅仅返回一个状态为 200 的空值,这就是你需要发威的地方了。
代码地址:spring-server。
我们来看代码,代码结构:
Spring Boot 启动程序: Swagger2SpringBoot.java
Swagger 文档配置
可以看出使用了 springfox 来生成 Swagger 规格文档,如果看 pom.xml 文件,你会发现生成的代码使用了 springfox-swagger2 和 springfox-swagger-ui,笔者的理解是,springfox-swagger2 用于将程序中的 Swagger annotation 生成 Swagger 规格文档,而 springfox-swagger-ui 则用于将规格文档进行展现并处理用户在 UI 上对 API 资源的操作。更多 Springfox 相关的内容参见 Springfox Reference Documentation。
Home Controller
Spring Annotations
Swagger 包含了一些特定的注解,可以更好的显示API:
总结
有人喜欢将 Swagger 规格文档单独存放在项目中,内嵌一个 Swagger UI, 并将 index.html 中的 url 指向规格文档,如 ref2。笔者认为这种方式不是特别利于维护,假设代码修改了,而忘了修改 Swagger 规格文档,则会造成不一致。本文使用的 Swagger 注解的方式使得文档跟着代码一块走,更利于文档的维护。
Reference:
1 Implementing Swagger (OpenAPI specification) with your REST API documentation
2 Swagger: How to Create an API Documentation