Spring Boot2配置Swagger2生成API接口文档

打印 上一主题 下一主题

主题 545|帖子 545|积分 1635

一、Swagger2介绍

前后端分离开发模式中,api文档是最好的沟通方式。
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。

  • 及时性 (接口变更后,能够及时准确地通知相关前后端开发人员)
  • 规范性 (并且保证接口的规范性,如接口的地址,请求方式,参数及响应格式和错误信息)
  • 一致性 (接口信息一致,不会出现因开发人员拿到的文档版本不一致,而出现分歧)
  • 可测性 (直接在接口文档上进行测试,以方便理解业务)
二、配置Swagger2

1、引入相关依赖
  1. <dependency>
  2.         <groupId>io.springfox</groupId>
  3.         <artifactId>springfox-swagger2</artifactId>
  4.         <version>2.7.0</version>
  5. </dependency>
  6. <dependency>
  7.         <groupId>io.springfox</groupId>
  8.         <artifactId>springfox-swagger-ui</artifactId>
  9.         <version>2.7.0</version>
  10. </dependency>
复制代码
2、创建swagger的配置类
  1. @Configuration
  2. @EnableSwagger2
  3. public class SwaggerConfig {
  4.     @Bean
  5.     public Docket webApiConfig(){
  6.         return new Docket(DocumentationType.SWAGGER_2)
  7.                 .groupName("webApi")
  8.                 .apiInfo(webApiInfo())
  9.                 .select()
  10.                 .paths(Predicates.not(PathSelectors.regex("/admin/.*")))
  11.                 .paths(Predicates.not(PathSelectors.regex("/error.*")))
  12.                 .build();
  13.     }
  14.     private ApiInfo webApiInfo(){
  15.         return new ApiInfoBuilder()
  16.                 .title("XX平台API文档")
  17.                 .description("本文档描述了xxx接口定义")
  18.                 .version("1.0")
  19.                 // 创建人
  20.                 .contact(new Contact("Jade", "http://jade.com", "55317362@qq.com"))
  21.                 .build();
  22.     }
  23. }
复制代码
3、在启动类上添加注解扫描swagger的配置类,进行测试

要能扫描到swagger的配置类SwaggerConfig
  1. @SpringBootApplication
  2. // 要能扫描到swagger的配置类SwaggerConfig
  3. @ComponentScan(basePackages = {"com.jade"})
  4. public class Application {
  5.     public static void main(String[] args) {
  6.         SpringApplication.run(Application.class, args);
  7.     }
  8. }
复制代码
4、API模型

可以添加一些自定义设置,例如:
定义样例数据
  1. @ApiModelProperty(value = "创建时间", example = "2019-01-01 8:00:00")
  2. @TableField(fill = FieldFill.INSERT)
  3. private Date gmtCreate;
  4. @ApiModelProperty(value = "更新时间", example = "2019-01-01 8:00:00")
  5. @TableField(fill = FieldFill.INSERT_UPDATE)
  6. private Date gmtModified;
复制代码

5、定义接口说明和参数说明

定义在类上:@Api
定义在方法上:@ApiOperation
定义在参数上:@ApiParam
  1. @Api(description="讲师管理")
  2. @RestController
  3. @RequestMapping("/admin/edu/teacher")
  4. public class TeacherAdminController {
  5.     @Autowired
  6.     private TeacherService teacherService;
  7.     @ApiOperation(value = "所有讲师列表")
  8.     @GetMapping
  9.     public List<Teacher> list(){
  10.         return teacherService.list(null);
  11.     }
  12.     @ApiOperation(value = "根据ID删除讲师")
  13.     @DeleteMapping("{id}")
  14.     public boolean removeById(
  15.             @ApiParam(name = "id", value = "讲师ID", required = true)
  16.             @PathVariable String id){
  17.         return teacherService.removeById(id);
  18.     }
  19. }
复制代码
6、测试,查看效果

访问http://localhost:8080/swagger-ui.html 即可


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万有斥力

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表