springboot集成swagger3与knife4j的详细代码
作者:卑微小钟 发布时间:2023-11-27 18:22:58
标签:springboot,集成,swagger3,knife4j
springboot集成swagger3
swagger3的springboot启动器jar包
<!-- 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>
注意:当前SpringBoot版本为2.5.6,Swagger3.0目前无法完全兼容SpringBoot2.6.x!
编写TestController代码
@RestController
@RequestMapping("test")
public class TestController {
@GetMapping
public Map<String, Object> get(@RequestParam String id) {
Map<String, Object> r = new HashMap<>(1);
r.put("id", id);
return r;
}
@PostMapping
public Map<String, Object> post() {
Map<String, Object> r = new HashMap<>(1);
r.put("code", 200);
return r;
}
@PutMapping
public Map<String, Object> put(String id) {
Map<String, Object> r = new HashMap<>(1);
r.put("id", id);
return r;
}
@DeleteMapping
public Map<String, Object> delete(String id) {
Map<String, Object> r = new HashMap<>(1);
r.put("id", id);
return r;
}
}
创建Swagger3Configuration
@Configuration
@EnableOpenApi
public class SwaggerConfig {
private static final String VERSION = "0.0.1";
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.OAS_30)
.groupName("分组名称")
.apiInfo(apiInfo())
.select()
//要扫描的包
.apis(RequestHandlerSelectors.basePackage("com.example.swagger.controller"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
// 设置标题
.title("文档标题")
//联系人
.contact(contact())
//描述
.description("xxx文档")
//服务
.termsOfServiceUrl("https://spring.io/")
//许可证
.license("Apache 2.0")
.licenseUrl("https://www.apache.org/licenses/LICENSE-2.0")
.version(VERSION)
.build();
}
private Contact contact (){
return new Contact("SpringBoot", "https://spring.io/", "email");
}
}
运行演示
访问网址:http://127.0.0.1:8081/swagger-ui/index.html
对接口进行注解
swagger中常用的注解
注解 | 作用 | 使用位置 |
---|---|---|
@Api | 表示对类的说明常用参数 | 类 |
@ApiOperation | 说明方法的用途 | 方法 |
@ApiImplicitParams | 里面可以包含多个@ApiImplicitParam | 方法 |
@ApiImplicitParam | 描述参数的用途 | 方法 |
@ApiModel | 表示一个数据类的信息 | 类 |
@ApiModelProperty | 描述数据类的属性 | 属性 |
@ApiIgnore | 忽略某个字段使之不显示在文档中 | 属性 |
接口基本使用
1.新建一个用户实体类
@ApiModel("用户")
@Data
public class User {
@ApiModelProperty("用户名")
private String username;
@ApiModelProperty("密码")
private String password;
}
2.给TestController添加注解
@Api(tags = "测试接口")
@RestController
@RequestMapping("test")
public class TestController {
@ApiOperation("get请求")
@GetMapping
@ApiImplicitParam(name = "id", value = "测试用id", dataTypeClass = String.class)
public Map<String, Object> get(@RequestParam String id) {
Map<String, Object> r = new HashMap<>(1);
r.put("id", id);
return r;
}
@ApiOperation("post请求")
@PostMapping
public Map<String, Object> post(@RequestBody User user) {
Map<String, Object> r = new HashMap<>(1);
r.put("code", 200);
return r;
}
@ApiOperation("put请求")
@PutMapping
@ApiImplicitParam(name = "id", value = "put请求id", dataTypeClass = String.class)
public Map<String, Object> put(String id) {
Map<String, Object> r = new HashMap<>(1);
r.put("id", id);
return r;
}
@ApiOperation("delete请求")
@DeleteMapping
@ApiImplicitParam(name = "id", value = "delete请求id", dataTypeClass = String.class)
public Map<String, Object> delete(String id) {
Map<String, Object> r = new HashMap<>(1);
r.put("id", id);
return r;
}
}
运行结果
集成更好的UI-knife4j
maven
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-micro-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
启动器
在SwaggerConfig类上添加**@EnableKnife4j**
@Configuration
@EnableOpenApi
@EnableKnife4j
public class SwaggerConfig
访问网站:http://127.0.0.1:8080/doc.html#/home
来源:https://blog.csdn.net/zhongjianboy/article/details/126366785


猜你喜欢
- 仅做学习交流,如有侵犯联系必删。前言一篇酷狗app安卓逆向的文章,难度适中。样本: 酷狗app v10.8.8工具: jadx、Pixel3
- public class MainActivity extends Activity { public RadioGroup mR
- 一、熔断器简介微服务架构特点就是多服务,多数据源,支撑系统应用。这样导致微服务之间存在依赖关系。如果其中一个服务故障,可能导致系统宕机,这就
- 1.引言合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务
- eclipse 创建 user library 方法1、Window - Preferences - Java - Build Path -
- 前言日志,在我们开发中是一个非常重要的话题,良好的日志打印可以帮助我们快速的定位问题,可能现在我们开发用到最多的日志框架就是slf4j了,但
- 文章描述以下主要还是使用到了ffmpeg命令,分别实现了给视频添加图片水印以及文字水印。开发环境.NET Framework版本:4.5开发
- 1. RocketMQ Topic创建机制以下源码基于Rocket MQ 4.7.0RocketMQ Topic创建机制分为两种:一种自动创
- 将Program类的删除,将里面的静态类Main修改后放入服务类中:partial class Server1 : ServiceBase&
- 上篇说完了如何接入微信公众号,本文说一下微信公众号的最基本功能:普通消息的接收和回复。说到普通消息,那么什么是微信公众号所定义的普通消息呢,
- 前言对于联表查询的四个注解 @OneToOne、@OneToMany、@ManyToOne 和 @ManyToMany,他们有几个用得比较多
- 前言emmm… 有个需求,需要根据信息生成svg,因为考虑到样式一致性的问题最终决定有服务端来生成svg。Java提供
- Mybatis简介MyBatis的前身叫iBatis,本是apache的一个开源项目, 2010年这个项目由apache software
- 我就废话不多说了,大家还是直接看代码吧~//returnContent为获取到的返回参数System.out.println(returnC
- 1.MyBatis动态SQLMyBatis 的强大特性之一便是它的动态 SQL,即拼接SQL字符串。如果你有使用 JDBC 或其他类似框架的
- namespace PadWebServices.Model{ public static class DataTa
- 一.有段时间没更了,因为一直在思索,应该写点什么,真的是无比纠结。这一回,就给大家分享一款简便好用的,小编自制的土晾时间轴。附上XML预览图
- 目录一、.NET 体系结构二、Hello world三、类型和变量四、程序结构前言:C#(读作“See Sharp”)是一种新式编程语言,不
- WPF动画效果系列WPF实现动画效果(一)之基本概念WPF实现动画效果(二)之From/To/By 动画WPF实现动画效果(三)之时间线(T
- 本文实例为大家分享了Java实现部门员工管理的具体代码,供大家参考,具体内容如下项目作业:部门员工管理题目要求:某公司要开发内部的 &