1. Swagger的概述
Swagger的产生背景主要因为前后端分离开发模式的流行。前后端为了的数据传输,必须统一接口数据格式和请求等
接口文档就在这一阶段产生了,它主要解决接口规范问题。让前后端分离开发效率更高,而Swagger就是接口文档的具体落地产品
接口文档的具体产品还有:APIfox,Lkadoc等
1.1 Swagger的简介
Swagger是一套以Open API规则构建的开源工具,可以帮助设计、构建、记录接口文档
Swagger工具包括的组件:
- Swagger Editor:基于浏览器编辑器,可以在里面编写Open API接口规范。类似于Markdown具有实时预览描述文件的功能
- Swagger UI:将Open API规范呈现为交互式API文档,用可视化UI展示描述文件
- Swagger Codegen:将Open API规范生成为服务器存根和客户端库。通过Swagger Codegen可以将描述文件生成html 格式和cwiki形式的接口文档,同时也可以生成多种言语的客户端和服务端代码
- Swagger Inspector:和 Swagger UI有点类似,但是可以返回更多信息,也会保存请求的实际参数数据
- Swagger Hub:集成了上面所有项月的各个功能,你可以以项目和版本为单位,将你的描述文件上传到Swagger Hub中。在Swagger Hub中可以完成上面项目的所有工作,需要注册账号,分免费版和收费版
使用Swagger就是把相关信息存储在它定义的描述文件里面(yml或json格式),再通过维护这个描述文件去更新接口文档,以及生成各端代码
1.2 Open API规范
Open API规范(OpenAPI Specification)以前叫做Swagger规范是Rest API的API描述格式
OpenAPI规范(OAS)为REST API定义了一个与语言无关的标准接口,允许人和计算机发现和理解服务的功能,而无需访问源代码、文档或通过网络流量检查
Open API的规范内容:
- 每个访问地址的类型
- 每个操作的参数,包括输入输出参数
- 认证方法
- 连接信息,声明,使用团队和其他信息
Open API规范可以使用YAML或JSON格式进行编写
1.3 Springfox
使用Swagger时如果在版本更新或迭代时,需要更改Swagger的描述文件进行实时更新,但遇到频繁的更新项目版本时描述文件(ymal或json)也需要进行更新,这样增加开发的工作负担。那有没有一种技术能同步项目更新和描述文件更新
Marty Pitt编写了一个基于Spring的组件swagger-springmvc。Spring-fox就是根据这个项目发展而来的全新项目
Spring-fox的作用:
- 根据代码生成接口文档,所以在正常进行更新项目时,修改代码即可,它会实时进行生成
- 利用自身AOP特性,把Swagger集成进来,底层还是Swagger。但是使用起来方便很多
在实际的开发中,都是Spring-for配合Swagger进行文档开发
2. Swagger初体验
① 通过Spring Initializr构建一个SpringBoot项目
② 引入maven依赖
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency>
③ 启动类
@SpringBootApplication @EnableSwagger2 //EnableSwagger2是springfox提供的一个注解,代表swagger2相关技术开启。它会扫描当前类所在包及其子包中所有类型注解 public class springapplication { public static void main(String[] args) { SpringApplication.run(springapplication.class,args); } }
④ 新建一个Controller进行接口文档测试
@RestController public class swaggertest { @GetMapping("/getswagger") public String getswagger(String user, Integer password){ return "Get Mothed Swagger"; } @PostMapping("/postswagger") public String postswagger(){ return "Post Mothed Swagger"; } @RequestMapping("mothedswagger") public String mothedswagger(){ return "Mothed Swagger"; } }
⑤ 启动springboot,访问localhost:8080/swagger-ui.html
3. Swagger的常用配置
Swagger配置依赖Decket
3.1 基本信息配置
基本信息配置使用ApiInfo对象进行配置
ApiInfo的方法:
- contact:设置作者信息
- title:设置标题
- description:描述信息
- version:版本
- license:协议
- licenseUrl:协议地址
- termsOfServiceUrl:服务的条款
例:
@Bean public Docket docket(){ //创建一个Docket对象,参数:文件类,这里使用SWAGGER_2类型文档 Docket docket = new Docket(DocumentationType.SWAGGER_2); //API帮助文档的描述信息对象 ApiInfo apiInfo = new ApiInfoBuilder() .contact(//发布者信息 new Contact("空想家",//文档发布者名称 "https://wql.luoqin.ltd",//文档发布者地址或者企业网站 "2562694007@qq.com"))//文档发布者邮箱 .title("Swagger框架学习帮助文档")//文档发布的标题 .description("Swagger框架学习帮助文档详细描述 -- Swagger是一个由于开发RestAPI帮助文档的框架")//文档描述 .version("1.1")//文档发布的版本 .termsOfServiceUrl() .build(); docket.apiInfo(apiInfo);//将基础信息加入Docket return docket; }
3.2 扫描包配置
扫描包:扫描哪些包下的注解生成接口文档,一种更精细化的操作
该配置使用到docket对象的两个方法:
- select():获取docket的选择器,返回ApiSelectorBuilder
- apis():设置扫描那个包
例:
@Bean public Docket docket(){ Docket docket = new Docket(DocumentationType.SWAGGER_2); docket.select() .apis(RequestHandlerSelectors.basePackage("com.swg.controller")).build(); return docket; }
3.3 路径服务配置
路径服务的含义:规定哪些Url地址范围可以生成接口文档
该配置使用到docket对象的两个方法:
- select():获取docket的选择器,返回ApiSelectorBuilder
- paths():设置地址匹配规则
例:
@Bean public Docket docket(){ Docket docket = new Docket(DocumentationType.SWAGGER_2); docket.select() .apis(RequestHandlerSelectors.basePackage("com.swg.controller")) //PathSelectors.regex正则表达式路径匹配 .paths(PathSelectors.regex("/swaggerwql/.*")).build();//请求url以/swaggerwql开头的才进行匹配 return docket; }
Comments | NOTHING
Warning: Undefined variable $return_smiles in /www/wwwroot/wql_luoqin_ltd/wp-content/themes/Sakura/functions.php on line 1109