SpringBoot集成Swagger2
引言
在前后端开发过程中,为了减少前后端程序员以及与其他团队之间的沟通成本,因此要定义一组公共的API接口文档来描述所有接口方法的信息。但是这种方式在某一方面也存在很大的弊端,如下:
- 如果开发人员所描写的接口数量众多,一方面编写API接口文档工作量巨大,另一方面因为API接口不仅包含接口的基础信息,例如:请求参数‘请求类型及接口的返回值等等,还要包含HTTP请求类型,请求头、请求参数类型等;
- 后期维护不方便,一旦编写的接口发生变化,就要修改此API接口文档;
- 接口测试不方便,一般只能靠第三方客户端来测试
一、Swagger 2简介
Swagger 2是一个开源的软件框架,可以帮助开发人员设计、构建和使用Web服务,将代码与文档结合在一起,完美的解决了上述问题,使开发人员将大部分精力集中到业务中,而不是文档的撰写。
二、SpringBoot集成Swagger
2.1引入Swagger的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--swagger-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<scope>compile</scope>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<scope>compile</scope>
<version>2.9.2</version>
</dependency>
2.2编写Swagger 2配置类
package com.org.comunity.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.org.comunity"))
.build().apiInfo(new ApiInfoBuilder().description("xxxx管理系统")
.contact(new Contact("xxx", "https://www.xxx.com", "xxxx@163.com"))
.version("V1.0").title("API测试文档")
.license("Apache2.0")
.licenseUrl("http://www.apache.org/licenses/LICENSE-2.0")
.build());
}
}
解释:
RequestHandler=Selectors.basePackage(“com.org.comunity”)
com.org.comunity为所要扫描的控制器即接口
2.3编写控制器类测试
package com.org.comunity.controller;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class RootController {
@ApiOperation("测试")
@RequestMapping("/hello")
public String test(){
return "Hello World!";
}
}
Swagger 2注解解释
注解 | 作用 | 参数 |
---|---|---|
@Api | 表示标识这个类是swagger的资源 | 1.tags=“说明该类的作用,可以在UI界面上看到的注解” 2.value="该参数没什么意义,在UI界面上也看到,所以不需要配置" |
@ApiOperation | 用在请求的方法上,说明方法的用途、作用,表示一个http请求的操作 | value=“说明方法的用途、作用” notes="方法的备注说明" |
@ApiImplicitParams | 用在请求的方法上,表示一组参数说明,用于方法,包含多个 @ApiImplicitParam | name–参数ming value–参数说明 dataType–数据类型 paramType–参数类型 example–举例说明 |
@ApiImplicitParam | 用在@ApiImplicitParams注解中,指定一个请求参数的各个方面,表示单独的请求参数 | name:参数的汉字说明、解释 value:参数名 required:参数是否必须传 paramType:参数放在哪个地方 header: 请求参数的获取: |
@ApiIgnore | 用于类,方法,方法参数表示这个方法或者类被忽略 ,可以不被swagger显示在页面上 | |
@RequestHeader | 指定请求类型 | query:请求参数的获取: |
@ApiParam | 用于方法,参数,字段说明;表示对参数的添加元数据(说明或是否必填等 | name–参数名 value–参数说明 required–是否必填 |
@PathVariable | 是获取get方式,url后面参数,进行参数绑定,对应path | body(不常用)form(不常用) dataType:参数类型,默认String,其它值dataType=“Integer” defaultValue:参数的默认值 |
@ApiResponses | 用在请求的方法上,表示一组响应 | code http的状态码 message 描述 response 默认响应类 Void reference 参考ApiOperation中配置 responseHeaders 参考 ResponseHeader 属性配置说明 responseContainer 参考ApiOperation中配置 |
@ApiResponse | 用在@ApiResponses中,一般用于表达一个错误的响应信息 | code:数字,例如400 message:信息,例如"请求参数没填好" response:抛出异常的类 |
@ApiModel | 用于响应类上,表示一个返回响应数据的信息这种一般用在post创建的时候,使用@RequestBody这样的场景,请求参数无法使用@ApiImplicitParam注解进行描述的时候)表示对类进行说明,用于参数用实体类接收 | 暂无 |
@ApiModelProperty | 表示对model属性的说明或者数据操作更改 | value–字段说明 name–重写属性名字 dataType–重写属性类型 required–是否必填 example–举例说明 hidden–隐藏 |
@ResponseHeader | 用于方法上,设置响应头 | name 响应头名称 description 头描述 response 默认响应类 Void responseContainer 参考ApiOperation中配置 |
黄色为常用注解
2.4启动应用访问swagger-ui
浏览器输入 http://localhost:8086/swagger-ui.html
8086为你的应用启动的端口号
用法:
以上就是SpringBoot集成Swagger 2的全部了,希望大家能够get,有问题请及时批评斧正!!!