====== 前言 ====== ^概念 ^意思 ^ |OpenAPI |有别于专有API:自己服务后端接口专门暴露给自己网站使用的, 它是暴露出来给其他公司应用或网站使用的API | |OAS3 |Open API Specification 3的缩写,即OpenAPI规范(第三版本)由https://openapis.org于2017年7月发布,目前最新的是3.1: https://spec.openapis.org/oas/v3.1.0 | |Swagger UI |官网https://swagger.io/, 有好几个开源产品,其中swagger-ui: https://swagger.io/tools/swagger-ui/ 比较好用,产品本质:一个index.html + 一堆静态文件. 开源地址:https://github.com/swagger-api/swagger-ui, 最新版3.51.1 | |springfox |封装swagger-ui做得java实现,代码:https://github.com/springfox/springfox | |springdoc-openapi |封装swagger-ui做得java实现,代码:https://github.com/springdoc/springdoc-openapi | |swagger-bootstrap-ui |封装swagger-ui做得java实现,代码: https://github.com/xiaoymin/swagger-bootstrap-ui 已改名为knife4j | 因为google, facebook,tencent 等这些大公司,已经不再是只做一些暴露给自己公司应用去使用的专有API了,也已经有了很多Open API。而这种需求越来越多,于是大家有了Open API的规范。 而大家都有自动根据代码生成文档的需求。所以swagger做了一套很好的UI界面交互的产品: swagger-ui. 为了能让他java开发,很容易直接使用上,并且很好的兼容springboot之类的。不同组织或个人分别开发了: springfox, springdoc-openapi, knife4j ====== 关于技术选择 ====== 2020年年初,我选择了springfox的2.8版本,后来升级为2.9.2。但在开发的过程中,仍然遇到解决不了的困难,比如:无法全局设置cookie 2021年七月,我尝试在新的项目中使用springfox 3.0.0。据说是可以全局设置cookie,但仍然会遇到nullpoint exception。在艰难的探索中,无意间发现了springdoc-openapi 经过对比,springdoc-openapi更加优于springfox和knife4j。最终选择使用它作为今后个人项目中的文档工具。 ====== 使用springdoc-openapi ====== 参看 demo: https://springdoc.org/#demos 相关配置: https://springdoc.org/index.html#swagger-ui-properties 引入jar org.springdoc springdoc-openapi-ui 1.5.9 做些配置: #开启swagger-ui springdoc.swagger-ui.enabled=true springdoc.swagger-ui.path=/swagger-ui/index.html #不显示默认的例子 springdoc.swagger-ui.disable-swagger-default-url=true #配置扫描目录 springdoc.packages-to-scan=com.xiaosq.projectx.web.controller ====== 主要使用上的优势 ====== ^springdoc ^springfox ^ |@Schema支持默认值,目前仅对String类型生效 |@ApiModelProperty不支持设置默认值 | |这个目前看到的代码更新更活跃,最新版本时今年4月的 |最新版本是去年,前年的。有点悬 | |很好的支持cookie和header |也能支持,只是不太好 |