Spring Boot demo系列(八):Swagger
2021.2.24 更新
1 概述
Swagger
主要用于生成API
文档,本文演示了如何使用目前最新的OpenAPI3
以及Swagger
来进行接口文档的生成。
2 依赖
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.4.7</version>
</dependency>
Gradle
:
implementation( "org.springdoc:springdoc-openapi-ui:1.4.7")
3 配置
Swagger
的配置很简单,仅需要一个@OpenAPIDefinition
即可,@OpenAPIDefinition
用于描述全局的配置信息,参考配置如下:
info
表示基本信息,比如标题,版本,描述等externalDocs
是参考文档servers
是服务器地址
@OpenAPIDefinition(info = @Info(title = "标题",version = "版本",description = "描述"),
externalDocs = @ExternalDocumentation(description = "参考文档",url = "https://www.baidu.com"),
servers = @Server(url = "http://localhost:8080"))
public class SwaggerConfig {
}
接着在配置文件写上文档路径:
springdoc:
api-docs:
path: /doc
4 访问
运行后直接访问
localhost:8080/swagger-ui/index.html/
会出现如下界面:
搜索栏中输入配置文件中的路径/doc
搜索即可:
或者直接访问:
http://localhost:8080/swagger-ui/index.html?url=/doc
5 控制器
下一步就是添加具体的接口,先来看一个简单的例子:
@RestController
@Tag(name = "测试Controller")
@RequestMapping("/")
public class TestController {
@GetMapping("test")
@Operation(description = "测试接口",tags = "测试Controller")
public String test()
{
return "success";
}
}
运行后可以看到多了一个接口,也就是@Tag
与@Operation
起作用了,注解说明如下:
@Tag
表示标签,name
指定标签的值,也可以加上description
等属性@Operation
作用在方法上,可以指定描述以及标签,也可以指定参数以及返回值等信息
类似的注解还有很多,比如:
@Parameter
:指定参数属性,比如description
、name
等@ApiResponse
:指定返回值,常用的属性有responseCode
以及description
@Schema
:用在实体类上以及实体类字段上,在接口上可以显示对应的值
6 完整示例
下面是一个接口控制器的完整示例:
@RestController
@Tag(name = "测试Controller")
@RequestMapping("/")
public class TestController {
@GetMapping("test")
@Operation(description = "测试接口",tags = {"测试Controller","测试"})
public String test()
{
return "success";
}
@GetMapping("test2")
@Operation(description = "这个也是测试接口",tags = {"测试Controller","2号测试接口"})
@Parameter(description = "必要参数",name = "parm")
public String test2(@RequestParam String parm)
{
return "需要参数";
}
@GetMapping("test3")
@Operation(description = "带有返回状态的接口",tags = {"测试Controller"})
@ApiResponse(responseCode = "111",description = "测试成功")
@ApiResponse(responseCode = "222",description = "测试失败")
public void test3(@RequestBody String body)
{
}
@GetMapping("test4")
@Operation(description = "User接口",tags = {"测试Controller"})
@ApiResponse(responseCode = "100",description = "添加成功")
public void test4(@RequestBody User user)
{
}
}
实体类:
@Getter
@Schema(description = "用户")
public class User {
@Schema(description = "用户名")
private String name;
@Schema(description = "主键")
private String id;
}
效果如图:
7 参考源码
Java
版:
Kotlin
版:
Spring Boot demo系列(八):Swagger的更多相关文章
- Spring Boot demo系列(二):简单三层架构Web应用
2021.2.24 更新 1 概述 这是Spring Boot的第二个Demo,一个只有三层架构的极简Web应用,持久层使用的是MyBatis. 2 架构 一个最简单的Spring Boot Web应 ...
- Spring Boot demo系列(十):Redis缓存
1 概述 本文演示了如何在Spring Boot中将Redis作为缓存使用,具体的内容包括: 环境搭建 项目搭建 测试 2 环境 Redis MySQL MyBatis Plus 3 Redis安装 ...
- Spring Boot demo系列(九):Jasypt
2021.2.24 更新 1 概述 Jasypt是一个加密库,Github上有一个集成了Jasypt的Spring Boot库,叫jasypt-spring-boot,本文演示了如何使用该库对配置文件 ...
- Spring Boot demo系列(六):HTTPS
2021.2.24 更新 1 概述 本文演示了如何给Spring Boot应用加上HTTPS的过程. 2 证书 虽然证书能自己生成,使用JDK自带的keytool即可,但是生产环境是不可能使用自己生成 ...
- Spring Boot demo系列(五):Docker部署
2021.2.24 更新 1 概述 本文讲述了如何使用Docker部署Spring Boot应用,首先介绍了Docker的安装过程,接着介绍了Docker的一些基础知识,最后讲述了Dockerfile ...
- Spring Boot demo系列(四):Spring Web+Validation
2021.2.24 更新 1 概述 本文主要讲述了如何使用Hibernate Validator以及@Valid/@Validate注解. 2 校验 对于一个普通的Spring Boot应用,经常可以 ...
- Spring Boot demo系列(一):Hello World
2021.2.24 更新 1 新建工程 打开IDEA选择新建工程并选择Spring Initializer: 可以在Project JDK处选择JDK版本,下一步是选择包名,语言,构建工具以及打包工具 ...
- Spring Boot demo系列(三):Spring Web+MyBatis Plus
2021.2.24 更新 1 概述 Spring Web+MyBatis Plus的一个Demo,内容和上一篇类似,因此重点放在MyBatis Plus这里. 2 dao层 MyBatis Plus相 ...
- Spring Boot干货系列:(八)数据存储篇-SQL关系型数据库之JdbcTemplate的使用
Spring Boot干货系列:(八)数据存储篇-SQL关系型数据库之JdbcTemplate的使用 原创 2017-04-13 嘟嘟MD 嘟爷java超神学堂 前言 前面几章介绍了一些基础,但都是静 ...
随机推荐
- hadoop支持lzo完整过程
简介 启用lzo 启用lzo的压缩方式对于小规模集群是很有用处,压缩比率大概能降到原始日志大小的1/3.同时解压缩的速度也比较快. 安装lzo lzo并不是linux系统原生支持,所以需要下载安装软件 ...
- win10 查看已保存的wifi密码
netsh wlan show profile name="WIFINAME-Test" key=clear C:\windows\system32> C:\window ...
- Vue中Jsx的使用
什么是JSX? JSX就是Javascript和XML结合的一种格式.React发明了JSX,利用HTML语法来创建虚拟DOM.当遇到<,JSX就当HTML解析,遇到{就当JavaScript解 ...
- Go benchmark 一清二楚
前言 基准测试(benchmark)是 go testing 库提供的,用来度量程序性能,算法优劣的利器. 在日常生活中,我们使用速度 m/s(单位时间内物体移动的距离)大小来衡量一辆跑车的性能,同理 ...
- secure 审计暴力登陆
文件路径 cd /var/log -rw------- 1 root root 1200063 Aug 10 20:04 secure 做应急响应,或者做脚本监控的时候,都可以参考如下特征 ... A ...
- AQS源码解读(ReentrankLock的公平锁和非公平锁)
构建Debug代码: 1 package com.hl.interview.lock; 2 3 import java.util.Scanner; 4 import java.util.concurr ...
- SQLServer 2008快速导出架构和数据脚本
https://jingyan.baidu.com/article/454316ab715218f7a7c03a9d.html
- 浅谈Dotnet的数据定位和匹配
Dotnet里,数据定位和匹配的相关编程现在变得很舒服. 最近项目紧,还要不停出差. 所以,写个短点的.最近经常用到的内容:数据定位和匹配. 数据定位 假设我们有这样一个数组: var arr ...
- 卷积神经网络学习笔记——轻量化网络MobileNet系列(V1,V2,V3)
完整代码及其数据,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/DeepLearningNote 这里结合网络的资料和Mo ...
- arcgis for js 4.6加载本地发布好的2维地图
我本地发布好的地图服务信息如下图所示: 我们在代码中使用到的url是图中所示的REST URL 加载代码如下: <!DOCTYPE html> <html> <head& ...