在现在的开发过程中还有很大一部分公司都是以口口相传的方式来进行前后端的联调,而接口文档很大一部分都只停留在了说说而已的地步,或者写了代码再写文档。 还有一点就是文档的修改,定义好的接口并不是一成不变的,可能在开发过程中文档修改不止一次的变化,这个时候就会很难受了。 只要不是强制性要求,没人会愿意写这东西,而且在写的过程中,一个字母的错误就会导致联调时候的很大麻烦,但是通过Swagger
,我们可以省略了这一步,而且文档出错率近乎于零, 只要你在写代码的时候,稍加几个注解,文档自动生成。
1、在控制层Controller
中添加注解来描述接口信息如:
2、在方法中配置接口的标题信息
3、在系统工具-系统接口
测试相关接口
注意:SwaggerConfig可以指定根据注解或者包名扫描具体的API
API详细说明
api
标记,用在类上,说明该类的作用。可以标记一个Controller
类做为Swagger
文档资源,使用方式:
与Controller
注解并列使用。 属性配置:
ApiParam
标记,请求属性,使用方式:
与Controller中的方法并列使用,属性配置:
ApiResponse
标记,响应配置,使用方式:
与Controller
中的方法并列使用,属性配置:
ApiResponses
标记,响应集配置,使用方式:
与Controller
中的方法并列使用,属性配置:
ResponseHeader
标记,响应头设置,使用方法
与Controller
中的方法并列使用,属性配置:
Swagger升级SpringDoc指南
OpenAPI 3 Library for spring-boot
由于 springfox
与 knife4j
均停止维护 bug众多
故从 4.3.0
开始 迁移到 springdoc
框架
基于 javadoc
无注解零入侵生成规范的 openapi
结构体
由于框架自带文档UI功能单一扩展性差 故移除自带UI 建议使用外置文档工具
由于框架采用 openapi
行业规范 故市面上大部分的框架均支持 可自行选择
例如: apifox
postman
torna
等 根据对应工具的文档接入即可
常见功能如下 其他功能自行挖掘
注意: javadoc
只能替换基础功能 特殊功能还需要使用注解实现
api-docs和swagger-ui的关系:
简单说下个人理解的api-docs和swagger-ui的关系:
api-docs是根据openapi规范生成的json文档。
swagger-ui是根据api-docs生成的可视化的页面。
所以api-docs才是根本,ui可以随意选择自己喜欢的。
引入依赖
基于javadoc从注释生成api文档的思路(一) - 掘金
对于想要启用 javadoc 支持的项目,应将以下依赖项与依赖项结合使用:springdoc-openapi-ui
这种依赖关系改进了对javadoc标签和注释的支持:
-
方法的 javadoc 注释:解析为描述@Operation
-
@return
:解析为响应描述@Operation
-
属性的 javadoc 注释:解析为此字段的“@Schema”描述。
此依赖项基于 therapi-runtime-javadoc 库
确保启用 的注释处理器,以便启用 javadoc 对 springdoc-openapi 的支持。therapi-runtime-javadoc
如果同时存在 swagger-annotation 描述和 javadoc 注释。将使用swagger属性
核心配置:
springdoc-openapi-ui同时提供swaggerUI和json API(以及yaml格式)。Springdoc-openapi-webmvc-core只提供swagger API。
SpringBoot + Maven实现多环境动态切换yml配置及配置文件拆分_因特马的博客-CSDN博客_yml 多环境 多功能拆分
踩坑:
参考:
Springboot整合Swagger3全注解配置(springdoc-openapi-ui)_阿祖,收手吧的博客-CSDN博客_springdoc 注解
SpringBoot应用生成RESTful API文档 - Swagger 2.0、OAS 3.0、Springfox、Springdoc、Smart-doc_罗小爬EX的博客-CSDN博客_restfulapi文档生成
文件配置
配置Swagger与SpringDoc
访问Swagger: localhost:8081/swagger-ui.html
访问api-docs: localhost:8081/v3/api-docs/就业管理系统
使用Apifox自动更新接口
补充说明
在springdoc生态中提供了一个Javadoc模块 - springdoc-openapi-javadoc,
该模块增强了springdoc对Java注释及Tag的处理能力,
但支持有限,目前仅支持:
方法上的注释 - 被解析为@Operation.description(即接口的描述信息,不支持@Operation.summary)
@param注释 - 被解析为@Parameter.description(即参数的描述信息)
@return注释 - 被解析为@Operation.response.description(即返回结果的描述信息)
对象属性上的注释 - 被解析为@Schema.description
关于注释的解析为api需要额外依赖 therapi-runtime-javadoc
注意: javadoc
只能替换基础功能 特殊功能还需要使用注解实现
关于JavaDoc注释:
Java javadoc 标准和注释规范 - 简书
javadoc注释规范
一、 Java文档
二、文档格式
写在类上的文档标注一般分为三段:
第一段:概要描述,通常用一句话或者一段话简要描述该类的作用,以英文句号结束
第二段:详细描述, 通常用一段或者多段话来详细描述该类的作用,一般每段话都以英文句号作为结束
第三段:文档标注,用于标注作者,创建时间,参阅类等信息
生成文档是HTML格式。
换行<br>
分段<p>(写在段前))
示例