Spring boot 集成swagger-ui 在线API文档生成自我实践记录

本文介绍了Swagger的基本概念、原理,并详细阐述了为何选择Swagger。通过Spring Boot集成Swagger,展示了如何配置 Swagger UI,以及常用注解的使用,包括API注解、Model注解和其他注解。此外,还探讨了接口分组的两种方式:路径分组和注解分组。
摘要由CSDN通过智能技术生成

目录

一、swagger简介

二、swagger原理

三、为什么选择swagger?

手写Api文档的几个痛点

swagger的优势

四、如何集成swagger到我们的项目?

五、总结常用swagger-ui注解

1)API的注解

- @Api() 用于类

- @ApiOperation() 用于方法

- @ApiParam() 用于方法,参数,字段说明

- @ApiResponses()用于包装类

- @ApiResponse()用于方法的返回结果

2)Model的注解

- @ApiModel() 用于类

- @ApiModelProperty() 用于model类的属性

3)其他注解

六、接口分组

路径分组

注解分组


一、swagger简介

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的API文档生成工具。

Swagger™的目标是为REST APIs 定义一个标准的,与语言无关的接口,使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger 让部署管理和使用功能强大的API从未如此简单。

二、swagger原理

首先看下springfox对文档Documentation的定义:

文档Documentation定义得很清晰,主要由groupName(分组名)、basePath(contextPath)、apiListings(API列表集)、resourceListing(资源列表集)等属性组成。

其中API列表被封装成ApiListing。ApiListing中又持有ApiDesciption集合引用,每个ApiDesciption都持有一个API集合的引用,Operation也就是具体的接口操作,内部包含了该接口对应的http方法、produces、consumes、协议、参数集、响应消息集等诸多元素。

springfox通过spring-plugin的方式将Plugin注册到Spring上下文中,然后使用这些plugin进行API的扫描工作,这里的扫描工作其实也就是构造Documentation的工作,把扫描出的结果封装成Documentation并放入到DocumentationCache内存缓存中,之后swagger-ui界面展示的API信息通过Swagger2Controller暴露,Swagger2Controller内部直接从DocumentationCache中寻找Documentation。

下面取部分plugin来看一下构造对应文档信息的过程:

从代码细节中入手,我们可以看到,入口处在@EnableSwagger2这个注解上,这个注解会导入一个配置类的Swagger2DocumentationConfiguration。

这个Swagger2DocumentationConfiguration做的事情如下:

1. 构造Bean。比如:HandlerMapping(HandlerMapping是springmvc中用于处理请求与handler(controller中的方法)之间映射关系的接口,springboot中默认使用的HandlerMapping是RequestMappingHandlerMapping),Swagger2DocumentationConfiguration配置类里构造的是PropertySourcedRequestMappingHandlerMapping,该类继承RequestMappingHandlerMapping。

2. import其它配置类,比如SpringfoxWebMvcConfiguration、SwaggerCommonConfiguration(SpringfoxWebMvcConfiguration配置类做的事情跟Swagger2DocumentationConfiguration类似)

3. 扫描指定包下的类,并注册到Spring上下文中

具体的API解析、扫描过程,这里不再展开细致的说明,可参考博文:https://yq.aliyun.com/articles/599809?utm_content=m_1000002417

总体上处理过程整理为下图:

三、为什么选择swagger?

手写Api文档的几个痛点

  1. 文档需要更新的时候,需要再次发送一份给前端,也就是文档更新交流不及时;
  2. 接口返回结果不明确;
  3. 不能直接在线测试接口,通常需要使用工具,比如postman;
  4. 接口文档太多,不好管理;

swagger的优势

  1. 使用Swagger UI生成的界面比Javadoc生成的界面美观
  2. swagger可以实时同步API文档(代码修改后,文档同步修改)
  3. swagger解析速度快,效率高(使用轻量级数据交换格式JSON)
  4. 对现有SpringMVC工程支持友好
  5. Swagger可以充当前后端交流的重要桥梁,方便快捷。很实用。
  6. Swagger项目允许你生产,显示和消费你自己的RESTful服务。不需要代理和第三方服务。

四、如何集成swagger到我们的项目?

说明:这里是在Spring boot的基础上集成swagger

  1. 添加maven依赖
    <!-- 引入swagger依赖 -->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>${swagger.version}&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值