SpringBoot从0到实战8:简单使用Swagger生成接口开发文档

2023-10-26

初识Swagger

  • Swagger 是一个规范和完整的框架,广泛用于生成、描述、调用和可视化 RESTful 风格的 Web服务。总体目标是使客户端和文件系统作为服务器以相同速度更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。通俗一点的来说,就是在项目中加入Swagger的相关配置,就可以生成项目全部接口文档方便前后端开发进行联动。

Swagger的作用

  • 接口文档自动生成。
  • 对接口进行功能测试。

Swagger的组成

  1. Swagger-tools:提供各种与Swagger进行集成和交互的工具。例如模式检验、Swagger 1.2文档转换成Swagger 2.0文档等功能。

  2. Swagger-core: 用于Java/Scala的的Swagger实现。与JAX-RS(Jersey、Resteasy、CXF…)、Servlets和Play框架进行集成。

  3. Swagger-js: 用于JavaScript的Swagger实现。

  4. Swagger-node-express: Swagger模块,用于node.js的Express web应用框架。

  5. Swagger-ui:一个无依赖的HTML、JS和CSS集合,可以为Swagger兼容API动态生成优雅文档。

  6. Swagger-codegen:一个模板驱动引擎,通过分析用户Swagger资源声明以各种语言生成客户端代码。

如何使用Swagger生成文档

1、进行maven依赖配置

在pom.xml中引入swagger依赖
在这里插入图片描述

2、在application中引入swagger类

在这里插入图片描述

  • 需要注意的是在apis中需要正确配置需要扫描的接口所在的包的路径即“com.example.demo.controller“”

3、添加swagger注解内容用于controller类上

在这里插入图片描述

4、运行项目

  • 贴上简单的代码截图
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

5、访问swagger-ui得到最终效果在这里插入图片描述

swagger注解的说明

1、@Api:对请求类的说明

@Api:放在请求的类上,与 @Controller 并列
说明类的作用,如该类是用于用户模块、商家模块等。
{
	tags="说明该类的作用"
	value="该参数没什么意义,所以不需要配置"
}

在这里插入图片描述

2、@ApiOperation:方法的说明

@ApiOperation:"用在请求的方法上,说明方法的作用"
{
	value="说明方法的作用"
	notes="方法的备注说明"
}

3、@ApilmplicitParams、@ApilmolicitParam:方法参数的说明

	@ApiImplicitParams:用在请求的方法上 包含一组参数说明
	@ApiImplicitParam:对单个参数的说明	    
	    name:参数名
	    value:参数的说明、描述
	    required:参数是否必须必填
	    paramType:参数放在哪个地方
	        	· query --> 请求参数的获取:@RequestParam
	        	· header --> 请求参数的获取:@RequestHeader	      
	       		· path(用于restful接口)--> 请求参数的获取:@PathVariable
	       	 	· body(请求体)-->  @RequestBody User user
	       		· form(普通表单提交)	   
	    dataType:参数类型,默认String,其它值dataType="Int" //注意这里不能填integer	   
	    defaultValue:参数的默认值
  • @ApilmplicitParams、@ApilmolicitParam:方法参数示例
@Api(tags="用户模块")
@Controller
public class UserController {

	@ApiOperation(value="用户登录",notes="随边说点啥")
	@ApiImplicitParams({
		@ApiImplicitParam(name="mobile",value="手机号",required=true,paramType="form"),
		@ApiImplicitParam(name="password",value="密码",required=true,paramType="form"),
		@ApiImplicitParam(name="age",value="年龄",required=true,paramType="form",dataType="Integer")
	})
	@PostMapping("/login")
	public JsonResult login(@RequestParam String mobile, @RequestParam String password,
	@RequestParam Integer age){
		//...
	    return JsonResult.ok(map);
	}
}

4、@ApiResponses、@ApiResponse:方法返回值的状态码说明

@ApiResponses:方法返回对象的说明
@ApiResponse:每个参数的说明
	  code:数字,例如400
	  message:信息,例如"请求参数没填好"
	  response:抛出异常的类
  • @ApiResponses、@ApiResponse:方法返回值的示例
@Api(tags="用户模块")
@Controller
public class UserController {

	@ApiOperation("获取用户信息")
	@ApiImplicitParams({
		@ApiImplicitParam(paramType="query", name="userId", dataType="String", required=true, value="用户Id")
	}) 
	@ApiResponses({
		@ApiResponse(code = 200, message = "请求成功"),
		@ApiResponse(code = 400, message = "请求参数没填好"),
		@ApiResponse(code = 404, message = "请求路径没有或页面跳转路径不对")
	}) 
	@ResponseBody
	@RequestMapping("/list")
	public JsonResult list(@RequestParam String userId) {
		...
		return JsonResult.ok().put("page", pageUtil);
	}
}

5、@ApiModel:用于JavaBean上面,表示对JavaBean 的功能描述

  • @ApiModel的功能:

  • 1、当请求数据描述,即 @RequestBody 时, 用于封装请求(包括数据的各种校验)数据;

  • 2、当响应值是对象时,即 @ResponseBody 时,用于返回值对象的描述。

  • 当请求数据描述时, @RequestBody 时的使用

@ApiModel(description = "用户登录")
public class UserLoginVO implements Serializable {

	private static final long serialVersionUID = 1L;

	@ApiModelProperty(value = "用户名",required=true)	
	private String username;

	@ApiModelProperty(value = "密码",required=true)	
	private String password;
	
	// getter/setter省略
}


@Api(tags="用户模块")
@Controller
public class UserController {

	@ApiOperation(value = "用户登录", notes = "")	
	@PostMapping(value = "/login")
	public R login(@RequestBody UserLoginVO userLoginVO) {
		User user=userSerivce.login(userLoginVO);
		return R.okData(user);
	}
}

在这里插入图片描述

@ApiModelProperty:用在JavaBean类的属性上面,说明属性的含义

@ApiModel(description= "返回响应数据")
public class RestMessage implements Serializable{

	@ApiModelProperty(value = "是否成功",required=true)
	private boolean success=true;	
	
	@ApiModelProperty(value = "错误码")
	private Integer errCode;
	
	@ApiModelProperty(value = "提示信息")
	private String message;
	
    @ApiModelProperty(value = "数据")
	private Object data;
		
	/* getter/setter 略*/
}

借鉴大佬的帖子:
https://blog.csdn.net/xiaojin21cen/article/details/78654652?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162860182416780366580688%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=162860182416780366580688&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-2-78654652.first_rank_v2_pc_rank_v29&utm_term=swagger%E6%B3%A8%E8%A7%A3&spm=1018.2226.3001.4187

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringBoot从0到实战8:简单使用Swagger生成接口开发文档 的相关文章

随机推荐

  • 数据库SQL优化大总结之 百万级数据库优化方案

    网上关于SQL优化的教程很多 但是比较杂乱 近日有空整理了一下 写出来跟大家分享一下 其中有错误和不足的地方 还请大家纠正补充 这篇文章我花费了大量的时间查找资料 修改 排版 希望大家阅读之后 感觉好的话推荐给更多的人 让更多的人看到 纠正
  • 【Xilinx Vivado时序分析/约束系列3】FPGA开发时序分析/约束-保持时间

    目录 基本概念 数据结束时间 Data finish time 时钟到达时间 Clock arrival time 保持时间门限 保持时间余量 Hold Slack 往期系列博客 基本概念 数据结束时间 Data finish time 之
  • win10+中标麒麟双系统安装步骤

    win7 10 中标麒麟双系统安装步骤 场景要求 联想启天M415台机出厂预装的是win10 现在要改成win7和中标麒麟7 0双系统 开机在选择系统界面要有两个系统选择 并且默认进入win7 注 先安装win7 再安装中标麒麟 一开始是用
  • MySQL--order by升序与降序、count计数与子查询

    MySQL order by升序与降序 count计数与子查询 1 创建表格 2 题目部分 1 升序与降序 order by 2 count 计数 3 子查询 3 文末彩蛋 轻松一刻 更多关于数据库知识请加关注哟 若需联系和想安装MySQL
  • 打印预览的时候,总是会多于一个空白页,怎么办?

    media print printTest 要打印的区域 display block width 100 height auto overflow hidden 在页面内加入此样式即可
  • PyTorch-01初见

    PyTorch 01初见 同类框架 PyTorch生态 PyTorch能做什么 1 GPU加速 import torch import time print torch version print torch cuda is availab
  • 零基础!搭建好本地的ChatGPT!

    当搭建好本地的GPT 你可以充分利用OpenAI的功能 无需使用任何魔法 并且免去了许多烦恼和难题 通过魔法访问gpt遇到过很多问题吗 以下是你搭建的本地GPT的一些关键特点 功能全面 你的本地GPT能够使用OpenAI的全部功能 让你体验
  • 11 前端模块化

    文章目录 为什么有前端模块化 以前的解决办法 了解CommonJS es6的模块化 export 导出 import 导入 为什么有前端模块化 首先 如果多人合作开发一个项目 你的a js用了一个变量a 你同事的b js也用了一个变量a 那
  • mybatis学习文档

    mybatis 9 28 环境 JDK1 8 mysql 8 0 16 maven3 6 1 IDEA 回顾 JDBC mysql jave基础 Maven junit 1 简介 1 1 什么是mybatis mybatis是支持普通SQL
  • StackExchange.Redis加锁机制实例

    1 redis下载安装 Github下载地址 https github com MicrosoftArchive redis releases 安装过程不做写明 1 VS引用StackExchange Redis 通过 工具 库程序包管理器
  • 软件测试 - sql - 与数据对话的语言

    初识数据库 一 数据库简介 1 1 常见数据库 1 2 数据库模型 1 3 关系型数据库 二 软件的安装与使用 mysql navicat 2 1 安装 2 2 启动关闭mysql服务 2 3 mysql连接navicat 三 数据库基本概
  • clickhouse 数据模型之有序漏斗分析(windowFunnel)

    什么是有序漏斗 有序漏斗需要满足所有用户事件链上的操作都是逡巡时间先后关系的 且漏斗事件不能有断层 触达当前事件层的用户也需要经历前面的事件层 介绍 windowFunnel 搜索滑动时间窗中的事件链 并计算从链中发生的最大事件数 该函数采
  • vs2010 内置了可应用于流的utf8和utf16的编码

    std wifstream is is open T E utf8 txt std ios base binary UTF 8编解码的关健代码 is imbue std locale std locale classic new std c
  • TCP/IP常见面试问题

    TCP IP常见面试问题 1 OSI七层协议以及四层协议 实际使用时只包含四层协议 从上到下依次是 应用层 http 传输层 tcp udp 网络层 ip 网络接口层 以太网协议 2 在网络中具体的传输过程 从上图可见传输的数据每经过一层
  • 【毕业论文】

    博客主页 肩匣与橘 欢迎点赞 收藏 留言 如有错误敬请指正 本文由肩匣与橘编写 首发于CSDN 生活依旧是美好而又温柔的 你也是 基于Unity3D引擎的冒险游戏的设计与实现 前言 摘要 Abstract 1 绪论 1 1 选题背景 1 2
  • rust物品图标_《腐蚀rust》全新XP建造系统图文介绍

    腐蚀rust 全新XP建造系统图文介绍 2016 06 23 15 05 28来源 贴吧编辑 评论 0 腐蚀rust 出了一个新的建造系统 XP建造系统 小编带来相关介绍 一起看一下吧 XP系统在测试服不断的更新完善 现在已经有了比较清晰的
  • 【docker】docker学习(4)——docker-compose常用语法与编写实战

    大家好 我是好学的小师弟 今天和大家分享下docker compose的一些常用语法和编写实战 docker compose是一个二进制文件 我们通常都是通过github把它下载下来 然后给他执行的权限 下载docker compose 在
  • 服务器中激活刚安装好的anaconda

    在服务器安装anaconda的过程中 最后一步是初始化 选择yes 然后在命令行输入conda info envs 发现conda not found 是因为conda环境未激活 此时直接输入source bashrc 即可成功激活环境 一
  • element-ui表格+分页器数据分页展示

  • SpringBoot从0到实战8:简单使用Swagger生成接口开发文档

    初识Swagger Swagger 是一个规范和完整的框架 广泛用于生成 描述 调用和可视化 RESTful 风格的 Web服务 总体目标是使客户端和文件系统作为服务器以相同速度更新 文件的方法 参数和模型紧密集成到服务器端的代码 允许AP