SpringBoot整合Swagger-ui的配置方法
手写Api文档的几个痛点:
- 文档需要更新的时候,需要再次发送一份给前端,也就是文档更新交流不及时。
- 接口返回结果不明确
- 不能直接在线测试接口,通常需要使用工具,比如postman
- 接口文档太多,不好管理
Swagger也就是为了解决这个问题,当然也不能说Swagger就一定是完美的,当然也有缺点,最明显的就是代码移入性比较强。
其他的不多说,想要了解Swagger的,可以去Swagger官网,可以直接使用Swagger editor编写接口文档,当然我们这里讲解的是SpringBoot整合Swagger2,直接生成接口文档的方式。
一.引入依赖:
在pom.xml文件中引入swagger2的依赖,版本根据公司要求引入
<!-- 引入swagger2依赖-->
<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>
二.在config配置包中添加Swagger配置类

代码展示:
package com.example.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.builders.ResponseMessageBuilder;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.ResponseMessage;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
import java.util.List;
/**
* 用@Configuration注解该类,等价于XML中配置beans;
* 用@Bean标注方法等价于XML中配置bean。
* Application.class 加上注解@EnableSwagger2 表示开启Swagger,也可以通过
* 配置文件设置是否开启swagger2
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Value("${swagger.enabled}")
private Boolean enabled;
/**
* .apis(RequestHandlerSelectors.basePackage("所需扫描的controller下的所有包")
* @return
*/
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.example.demo"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("springboot利用swagger2构建api文档")
.description("简单优雅的restful风格,http://blog.csdn.net/saytime")
.version("1.0")
.build();
}
private List<ResponseMessage> customerResponseMessage() {
List<ResponseMessage> list = new ArrayList<>();
list.add(new ResponseMessageBuilder().code(200).message("请求成功").build());
list.add(new ResponseMessageBuilder().code(201).message("资源创建成功").build());
list.add(new ResponseMessageBuilder().code(204).message("服务器成功处理了请求,但不需要返回任何实体内容").build());
list.add(new ResponseMessageBuilder().code(400).message("请求失败,具体查看返回业务状态码与对应消息").build());
list.add(new ResponseMessageBuilder().code(401).message("请求失败,未经过身份认证").build());
list.add(new ResponseMessageBuilder().code(405).message("请求方法不支持").build());
list.add(new ResponseMessageBuilder().code(415).message("请求媒体类型不支持").build());
list.add(new ResponseMessageBuilder().code(500).message("服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理").build());
list.add(new ResponseMessageBuilder().code(503).message("服务器当前无法处理请求,这个状况是临时的,并且将在一段时间以后恢复").build());
return list;
}
}
方法一:在启动类上添加注解@EnableSwagger2注解用来开启Swagger2

方法二:在配置类application.yml中设置是否开启Swagger,通过@Value注解引入配置

@Value("${swagger.enabled}")
private Boolean enabled;
三.Restful 接口测试
package com.example.demo.controller;
import com.example.demo.service.GradeService;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/grade")
public class GradeController {
@Autowired
private GradeService gradeService;
/**
* 根据姓名查询成绩信息
* @param name
* author: zkf
*/
@ApiOperation(value="获取成绩信息", notes="根据姓名查询成绩信息")
@ApiImplicitParam(name = "name", value = "姓名", required = true, dataType = "String", paramType = "path")
@GetMapping(value = "/find")
public String find(@RequestParam String name){
String score = gradeService.find(name);
return score;
}
}
项目结构:

四.Swagger2文档
启动SpringBoot项目,访问 http://localhost:8081/swagger-ui.html

出现这个页面说明配置成功了,具体里面的内容以及接口测试,应该一看就懂了。这里就不一一截图了...
五、Swagger注解
swagger通过注解表明该接口会生成文档,包括接口名、请求方法、参数、返回信息的等等。
- @Api:修饰整个类,描述Controller的作用
- @ApiOperation:描述一个类的一个方法,或者说一个接口
- @ApiParam:单个参数描述
- @ApiModel:用对象来接收参数
- @ApiProperty:用对象接收参数时,描述对象的一个字段
- @ApiResponse:HTTP响应其中1个描述
- @ApiResponses:HTTP响应整体描述
- @ApiIgnore:使用该注解忽略这个API
- @ApiError :发生错误返回的信息
- @ApiImplicitParam:一个请求参数
- @ApiImplicitParams:多个请求参数
本文转自:https://www.cnblogs.com/jtlgb/p/8532433.html

浙公网安备 33010602011771号