使用Swagger管理API

  • 1.Swagger简介
  • 2.在项目中使用Swagger
  • 3.配置swagger
  • 4.swagger配置扫描接口
  • 5.配置API文档的分组
  • 6.swagger的实体类扫描
  • 7.给Controller加文档注释

1.Swagger简介

Swagger 是一个规范且完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。

  • 支持 API 自动生成同步的在线文档:使用 Swagger 后可以直接通过代码生成文档,不再需要自己手动编写接口文档了,对程序员来说非常方便,可以节约写文档的时间去学习新技术。
  • 提供 Web 页面在线测试 API:光有文档还不够,Swagger 生成的文档还支持在线测试。参数和格式都定好了,直接在界面上输入参数对应的值即可在线测试接口。

2.在项目中使用Swagger

<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>3.0.0</version>
</dependency><!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>3.0.0</version>
</dependency><!-- https://mvnrepository.com/artifact/io.springfox/springfox-boot-starter -->
<dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version>
</dependency>

Springfox 使用的路径匹配是基于AntPathMatcher的,而Spring Boot 2.6.X +使用的是PathPatternMatcher,所以我们还需要修改一下SpringBoot配置文件内容:

新增如下配置:

spring:mvc:pathmatch:matching-strategy: ant_path_matcher

配置swagger 编写一个configure类:

@Configuration
@EnableSwagger2 // 开启Swagger2
public class SwaggerConfig {}

之后启动项目,访问如下地址,可以看到Swagger的初始化页面:

http://localhost:8080/swagger-ui/index.html#/

可以看到,我们编写的HelloController已经被Swagger扫描到了!


3.配置swagger

我们可以配置Swagger,实现基本页面的自定义:如下代码:

@Configuration
@EnableSwagger2 // 开启Swagger2
public class SwaggerConfig {// 配置了swagger的bean实例@Beanpublic Docket docket() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo());}// 配置swagger信息 apiInfoprivate ApiInfo apiInfo() {Contact contact = new Contact("klza", "http://localhost:8080", "3390205563@qq.com");return new ApiInfo("klza","中国最大的网络安全服务商","1.0","imustctf.top",contact,"Apache 2.0","http://www.apache.org/licenses/LICENSE-2.0",new ArrayList());}
}

效果:


4.swagger配置扫描接口

swagger默认会扫描全部路径下的API信息,我们可以进一步细化它的扫描范围:

需要对docket方法稍作改动:

例如:我们只想扫描controller包:

@Bean
public Docket docket() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.klza.controller")).build();
}

此时重启项目,error的API接口就扫描不到了!


5.配置API文档的分组

修改Docket中的groupName属性即可,若要配置多个组,就需要多个Docket:

先看看如何分组:

@Bean
public Docket docket() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).groupName("视频业务").select().apis(RequestHandlerSelectors.basePackage("com.klza.controller")).build();
}

重启项目,看到了分组情况:

配置多个分组,开启多个Docket即可:

@Bean
public Docket docket() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).groupName("视频业务").select().apis(RequestHandlerSelectors.basePackage("com.klza.controller")).build();
}@Bean
public Docket docket2() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).groupName("军火库业务");
}@Bean
public Docket docket3() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).groupName("竞赛业务");
}


6.swagger的实体类扫描

swagger很聪明,在controller中返回一个实体类对象,之后swagger就会在api中的model中生成一个实体类

例如:我们定义一个pojo类:

public class User {public String name;public String info;
}

在controller中使用它:

@GetMapping("/user")
public User user() {return new User();
}

重新启动项目,在model中会生成对应的实体类信息:

这还不够!我们还可以给实体类及其字段增加文档注释:

@ApiModel("用户实体类") // 给类加一个api注释
public class User {@ApiModelProperty("名字") // 给字段加一个api注释public String name;@ApiModelProperty("个人简介")public String info;
}

重启项目,看看效果:


7.给Controller加文档注释

给一个controller的方法加注释,使用@ApiOperation("xxx")

@RestController
public class HelloController {@ApiOperation("Hello控制类")@GetMapping("/hello")public String hello() {return "hello";}@ApiOperation("获得一个user")@GetMapping("/user")public User user() {return new User();}
}

还可以给参数加文档注释:

public String hello(@ApiParam("用户名") String username){return "hello";
}

使用Swagger管理API相关推荐

  1. Spring Boot 整合Swagger实现API管理

    Spring Boot 整合Swagger实现API管理 1 Swagger介绍 根据官网的介绍: https://swagger.io Swagger 是一款RESTFUL接口的.基于YAML.JS ...

  2. ABP学习实践(五)--引入Swagger对API接口进行管理

    以目前流行的前后端分离模式来看,ABP框架更适用于后端开发,而对API接口的管理就成了一项必不可少的功能. 1.安装Swashbuckle.AspNetCore 使用Nuget管理器在分布式服务层和展 ...

  3. spring boot 集成springfox,使用swagger对 API 接口进行测试管理的 demo 示例

    1. 描述 一个springboot项目集成 springfox 3.0,使用swagger对 API 接口进行测试管理的 demo示例. 环境: IDE(idea):2021.3 JDK:1.8 m ...

  4. SpringBoot整合Swagger测试api构建

    @Author:SimpleWu 什么是Swagger? Swagger是什么:THE WORLD'S MOST POPULAR API TOOLING 根据官网的介绍: Swagger Inspec ...

  5. Spring MVC中使用Swagger生成API文档和完整项目示例Demo,swagger-server-api(二十)

    一:Swagger介绍 Swagger是当前最好用的Restful API文档生成的开源项目,通过swagger-spring项目 实现了与SpingMVC框架的无缝集成功能,方便生成spring r ...

  6. multipartfile前端怎么传_前端那些事如何更好管理 Api 接口

    ❝ 前沿:自从前端和后端分家之后,前后端接口对接就成为了家常,"谁"也离不开谁,而对接接口的过程就离不开接口文档,比较主流就是Swagger(强大的API文档工具),当然今天它不是 ...

  7. 基于.NetCore3.1搭建项目系列 —— 使用Swagger做Api文档(上篇)

    前言 为什么在开发中,接口文档越来越成为前后端开发人员沟通的枢纽呢? 随着业务的发张,项目越来越多,而对于支撑整个项目架构体系而言,我们对系统业务的水平拆分,垂直分层,让业务系统更加清晰,从而产生一系 ...

  8. ASP.NET Core WebApi使用Swagger生成api说明文档看这篇就够了

    引言 在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必是件很痛苦的事情吧,但文档又必须写,而且文档的格式如果没有具体要求的话,最终完成的文档则完全取决于开发者 ...

  9. 【转】ASP.NET Core WebApi使用Swagger生成api说明文档看这篇就够了

    原文链接:https://www.cnblogs.com/yilezhu/p/9241261.html 引言 在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必 ...

最新文章

  1. 如何使用Salt 的各种状态值
  2. sscanf用法简介
  3. 以太坊智能合约开发:让合约接受转账
  4. 【测试】SAP 委外加工收货BAPI Demo
  5. 数据结构(一)线性表链式存储实现
  6. 使用多线程拷贝文件夹
  7. 无法删除所有指定的值_AutoCAD所有系统变量大全
  8. 水涨船高!造车新势力平均月薪15367元,自动驾驶算法岗年薪可达百万
  9. 以Post方式向指定url地址发送数据并活得返回结果
  10. 一文带你彻底理解Linux的各种终端类型及概念
  11. android使用百度地图、定位SDK实现地图和定位功能!(最新、可用+吐槽)
  12. 情人节到了,Postman 都脱单了,那你咧?
  13. 计算机组成原理 - x86 x64 arm64的区别 - 学习/实践
  14. String类型转换成json对象
  15. 一些经久不衰的linux 视频教程列表
  16. 使用DragonBones开发FLASH骨骼动画入门教程
  17. 计算机常见故障及其原因
  18. 连接计算机硬盘usb,使用移动硬盘时电脑显示:“如果您将此USB设备连接到高速USB2.0端口,可以提升其性能”...
  19. 210所高校21届保研率曝光!这些211保研率堪比985!
  20. Navicat导入excel表格(xlsx)报错解决

热门文章

  1. 赵小楼《天道》《遥远的救世主》深度解析(135)观念,传统观念,传统观念有没有用取决于观念,而不在传统
  2. 【鼠标右键点击桌面图标时,出现资源管理器未响应】
  3. 对面向对象和面向过程的理解
  4. 在aws云将本地虚拟机镜像上传
  5. sql查询--比较left join、join和子查询的性能
  6. BELLHOP 关于Actup冲激响应的绘制
  7. 『德不孤』Pytest框架 — 14、Pytest参数化
  8. Wordpress搭载七牛云CDN图片不显示问题解决
  9. C语言decompose函数,R语言时间序列应用(decompose、Holt-Winters初步)
  10. 电脑如何查看如何无限WiFi密码?