一、Swgger介绍
1.官网
https://swagger.io/
2.介绍
Swagger 是一个规范且完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。
Swagger 的目标是对 REST API 定义一个标准且和语言无关的接口,可以让人和计算机拥有无须访问源码、文档或网络流量监测就可以发现和理解服务的能力。当通过 Swagger 进行正确定义,用户可以理解远程服务并使用最少实现逻辑与远程服务进行交互。与为底层编程所实现的接口类似,Swagger 消除了调用服务时可能会有的猜测。
3.Swagger的优势
支持API自动生成同步文档,使用Swagger之后可以直接通过代码以及简单的配置来自动生成文档,不再需要手动写接口文档,对于程序员来说,可以节约写文档的时间,来学习新的技术
提供web页面的在线测试API,可以不需要postman等工具进行接口测试,在线测试参数与格式都确定了,直接在web界面进行参数设置就可以测试接口啦。
二、springBoot集成Swagger
1.新建springBoot,导入相关依赖
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
2.新建HelloController控制类接口,然后新建Swagger配置类
因为此类是配置类,所以加入注解@Configuration,Swgger注解@EnableSwagger2表示开启swagger,这样做便可以简单使用Swagger,但是所有配置都执行默认选项

在浏览器根路径加/swagger-ui.html,便可以访问web端API文档

此图为所有默认配置,在页面可以看到主要分为四个部分,载接口部分basic-error-controller为自带的,比如访问页面为404或者其他则默认走这个路径,Hello-controller为我们新建的Controller,当然我们要根据需要和双方人员需要来进行配置swagger,让他成为一个简单明了得api生成工具
@Configuration
@EnableSwagger2
public class Swagger2Config {
@Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
//RequestHandlerSelectors配置要扫描接口的方式
//basePackage表示指定扫描的包
.apis(RequestHandlerSelectors.basePackage("com.example.demo03.controller"))
//paths表示需要过滤得路径
.paths(PathSelectors.any())
.build();
}
//apiInfo为配置Swagger的apiInfo信息
private ApiInfo apiInfo(){
Contact contact = new Contact("liufuqiang", "https://cnblogs.com/LiuFqiang", "2895911487@qq.com");
return new ApiInfo(
"门诊用药分析系统后台RESTful API文档",
"author:liufuqiang",
"v1.0",
"https://cnblogs.com/LiuFqiang",
contact,
"Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList()
);
}
}
这里我们进行简单的配置,Docket为Swagger的实例,通过看底层源码我们可以看到Docket有一些属性

而我们要很好的使用Swagger需要配置这些属性,比如这里修改api的基本信息,以及指定需要扫面的包

三、环境切换
当我们在正常开发的时候,会有开发环境和生产环境,如果在线上的环境将这个文档直接暴露可能不太好,所有我们得根据想对应的项目环境来改变是否开启Swagger

api信息不变,增加属性Environment来监听这个项目的环境,如果为开发环境,设置开启Swagger,如果为生成环境,禁用Swagger,比如这里我们启用3030的生成环境,则会出现下面这个界面:

四、文档分组
给API文档分组,当我们 进行团队开发的时候,最好是将每一个人的文档进行分组以便前端开发人员使用,

当多人开发的时候,会为spring容器自动注入多个Docket实例,

我们可以看到在右上角多了几个空间,因为我们注入了三个对应的实例,otherA与otherB由于我们没有任何配置,所以会出现我们第一步的默认配置页面
五、代码注释
当我们在controller返回数据时,如果有涉及pojo类的数据,则这个实体类会被显示在model上
@RestController
public class HelloController {
@Autowired
private HelloService helloService;
@GetMapping("/getAllUser")
public Student getAllUser(){
return new Student();
}
}
这里我们新建实体类Student,在HelloController类中有方法中返回实体类

在多人开发时可能最痛苦的事情就是看别人写的代码,可能有些字段命名别人看不懂,所有在代码里面注释就会生成文档


当然我们也可以在请求的参数、接口名来进行注释


六、在线测试
点击某个方法的try it out

然后点Execute执行发送请求来进行线上接口测试