目录
- @ApiModelProperty() 用于model类的属性
一、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文档的几个痛点
- 文档需要更新的时候,需要再次发送一份给前端,也就是文档更新交流不及时;
- 接口返回结果不明确;
- 不能直接在线测试接口,通常需要使用工具,比如postman;
- 接口文档太多,不好管理;
swagger的优势
- 使用Swagger UI生成的界面比Javadoc生成的界面美观
- swagger可以实时同步API文档(代码修改后,文档同步修改)
- swagger解析速度快,效率高(使用轻量级数据交换格式JSON)
- 对现有SpringMVC工程支持友好
- Swagger可以充当前后端交流的重要桥梁,方便快捷。很实用。
- Swagger项目允许你生产,显示和消费你自己的RESTful服务。不需要代理和第三方服务。
四、如何集成swagger到我们的项目?
说明:这里是在Spring boot的基础上集成swagger
- 添加maven依赖
<!-- 引入swagger依赖 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>${swagger.version}&

本文介绍了Swagger的基本概念、原理,并详细阐述了为何选择Swagger。通过Spring Boot集成Swagger,展示了如何配置 Swagger UI,以及常用注解的使用,包括API注解、Model注解和其他注解。此外,还探讨了接口分组的两种方式:路径分组和注解分组。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



