- 前言
- 一、Swagger2
- 1.1、RESTful API
- 1.2、Swagger2的API介绍
- 1.3、springboot+swagger2使用
- 二、swagger3
- 2.1、springboot整合
- 2.2、集成第三方UI界面
- 2.3、API介绍
- 参考文章
本篇博客是SpringBoot整合Swagger2、Swagger3,若文章中出现相关问题,请指出!
所有博客文件目录索引:博客目录索引(持续更新)
一、Swagger2 1.1、RESTful APIRESTful API:
1.2、Swagger2的API介绍
//应用类
//说明接口文件
@Api(value = "测试接口", tags = "用户管理相关的接口", description = "用户测试接口")
//应用方法(一般为方法描述以及参数)
//方法描述:value方法名称,notes方法描述
@ApiOperation(value="删除用户", notes="根据url的id来指定删除对象")
//单个参数:name参数名;value参数说明,备注;dataType参数类型;required 是否必传;defaultValue 默认值
@ApiImplicitParam(name = "user", value = "新增用户数据")
//多参数描写法:
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long"),
@ApiImplicitParam(name = "user", value = "用户详细实体user", required = true, dataType = "User")
})
//应用于pojo属性(Model)
//描述字段信息
@ApiModelProperty("用户年龄")
1.3、springboot+swagger2使用
1、引入swagger2的坐标
io.springfox springfox-swagger2 2.2.2 io.springfox springfox-swagger-ui 2.2.2
2、编写Swagger2的配置类:SwaggerConfig.java
@Configuration
@EnableSwagger2 //启用Swagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
//是否开启 (true 开启 false隐藏。生产环境建议隐藏)
//.enable(false)
.select()
//扫描的路径包,设置basePackage会将包下的所有被@Api标记类的所有方法作为api:我这里设置指定的controller包下
.apis(RequestHandlerSelectors.basePackage("xyz.changlu.controller"))
//指定路径处理PathSelectors.any()代表所有的路径
.paths(PathSelectors.any())
.build();
}
//创建API的基本信息
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
//设置文档标题(API名称)
.title("SpringBoot中使用Swagger2接口规范")
//文档描述
.description("接口说明")
//服务条款URL
.termsOfServiceUrl("http://localhost:8080/")
//版本号
.version("1.0.0")
.build();
}
}
3、编写controller附带user实体类
User.java
@Data
public class User {
@ApiModelProperty("用户id")
private Long id;
@ApiModelProperty("用户姓名")
private String name;
@ApiModelProperty("用户年龄")
private Integer age;
}
UserController.java
@RestController
@RequestMapping(value="/users")
//1、Api:用来描述类。
@Api(value = "测试接口", tags = "用户管理", description = "用户管理相关接口")
public class UserController {
static Map users = Collections.synchronizedMap(new HashMap());
@ApiOperation(value="获取用户列表")
@RequestMapping(value={""}, method= RequestMethod.GET)
public List getUserList() {
List r = new ArrayList(users.values());
return r;
}
//方法作用
@ApiOperation(value="创建用户", notes="根据User对象创建用户")
//描述指定属性
@ApiImplicitParam(name = "user", value = "用户详细实体user", required = true, dataType = "User")
@RequestMapping(value="", method=RequestMethod.POST)
public String postUser(@RequestBody User user) {
users.put(user.getId(), user);
return "success";
}
@ApiOperation(value="获取用户详细信息", notes="根据url的id来获取用户详细信息")
@ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long")
@RequestMapping(value="/{id}", method=RequestMethod.GET)
public User getUser(@PathVariable Long id) {
return users.get(id);
}
@ApiOperation(value="更新用户详细信息", notes="根据url的id来指定更新对象,并根据传过来的user信息来更新用户详细信息")
//描述多个参数
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long"),
@ApiImplicitParam(name = "user", value = "用户详细实体user", required = true, dataType = "User")
})
@RequestMapping(value="/{id}", method=RequestMethod.PUT)
public String putUser(@PathVariable Long id, @RequestBody User user) {
User u = users.get(id);
u.setName(user.getName());
u.setAge(user.getAge());
users.put(id, u);
return "success";
}
@ApiOperation(value="删除用户", notes="根据url的id来指定删除对象")
@ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long")
@RequestMapping(value="/{id}", method=RequestMethod.DELETE)
public String deleteUser(@PathVariable Long id) {
users.remove(id);
return "success";
}
}
ok,最终访问http://localhost:8080/swagger-ui.html即可!!!
二、swagger3 2.1、springboot整合
注意点:依赖的springboot版本应该为2.5.3,高版本没有对应webmvc模块
org.springframework.boot spring-boot-starter-parent2.5.3
step1:引入依赖
io.springfox springfox-boot-starter 3.0.0
step2:开启swagger3
@EnableOpenApi //在springboot启动类上添加
step3:添加配置类
import io.swagger.annotations.ApiOperation;
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.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
@Configuration
public class Swagger3Config {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.OAS_30)
.apiInfo(apiInfo())
.select()
//扫描的路径包,这里扫描所有带有@ApiOperation注解的方法
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
//指定路径处理PathSelectors.any()代表所有的路径
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
//设置文档标题(API名称)
.title("svublog-web接口文档")
//文档描述
.description("web接口文档说明")
// 作者信息:作者名称、官网、邮箱
.contact(new Contact("Ray。", "http://www.ruiyeclub.cn", "ruiyeclub@foxmail.com"))
//文档版本
.version("1.0")
.build();
}
}
ok,之后启动项目,访问http://localhost:8080/swagger-ui/
2.2、集成第三方UI界面
com.github.xiaoymin swagger-bootstrap-ui 1.9.6
启动项目访问:http://localhost:8080/doc.html
更加清晰明了
2.3、API介绍
//1、接口类描述
@Api(value = "desc of class")
public class HelloController {
//2、方法描述
@ApiOperation(value = "hello one", notes = "")
@GetMapping(value = "/hello1")
//3、单个方法参数描述
public Object hello( @ApiParam(value = "desc of param", required = true) @RequestParam String name) {
参考文章
swagger2:
- Spring Boot中使用Swagger2构建强大的RESTful API文档
swagger3:
- SpringBoot整合Swagger3生成接口文档
- Swagger3 注解使用(Open API 3.0):2021年文章,挺新的。
- Springboot + Swagger3 集成和配置:介绍了一个第三方UI
我是长路,感谢你的耐心阅读。如有问题请指出,我会积极采纳!
欢迎关注我的公众号【长路Java】,分享Java学习文章及相关资料
Q群:851968786 我们可以一起探讨学习
注明:转载可,需要附带上文章链接



