Java程序设计:spring boot(8)——API ⽂档构建⼯具 - Swagger2

   目录

1 环境整合配置

2 Swagger2 常⽤注解说明

2.1 @Api

2.2 @ApiOperation

2.3 @ApiImplicitParams

2.4 @ApiResponses

2.5 @ApiModel

3 用户模块注解配置

3.1 Controller 使用注解

3.2 JavaBean 使用注解

4 Swagger2 接⼝⽂档访问


       由于 Spring Boot 能够快速开发、便捷部署等特性,通常在使⽤ Spring Boot 构建 Restful 接⼝应⽤ 时考虑到多终端的原因,这些终端会共⽤很多底层业务逻辑,因此我们会抽象出这样⼀层来同时服务于 多个移动端或者Web 前端。对于不同的终端公⽤⼀套接⼝ API 时,对于联调测试的时候就需要知道后端 提供的接⼝ API列表⽂档,对于服务端开发⼈员来说就需要编写接⼝⽂档,描述接⼝的调⽤地址、参数 结果等,这⾥借助第三⽅构建⼯具 Swagger2 来实现 API ⽂档⽣成功能。

1 环境整合配置

pom.xml 依赖添加:

<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version>
</dependency>
<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.9.2</version>
</dependency>

配置类添加:

@Configuration
@EnableSwagger2
public class Swagger2 {@Beanpublic Docket createRestApi() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.xxxx.springboot.controller")).paths(PathSelectors.any()).build();}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("⽤户管理接⼝API⽂档").version("1.0").build();}
}

2 Swagger2 常⽤注解说明

2.1 @Api

@Api:⽤在请求的类上,说明该类的作⽤tags="说明该类的作⽤"
@Api(tags="APP⽤户注册Controller")

2.2 @ApiOperation

@ApiOperation:"⽤在请求的⽅法上,说明⽅法的作⽤"value="说明⽅法的作⽤"notes="⽅法的备注说明"
@ApiOperation(value="⽤户注册",notes="⼿机号、密码都是必填项,年龄是选填项,但必须是数
字")

2.3 @ApiImplicitParams

@ApiImplicitParams:⽤在请求的⽅法上,包含⼀组参数说明@ApiImplicitParam:⽤在 @ApiImplicitParams 注解中,指定⼀个请求参数的配置信息 name:参数名value:参数的汉字说明、解释required:参数是否必须传paramType:参数放在哪个地⽅· header --> 请求参数的获取:@RequestHeader· query --> 请求参数的获取:@RequestParam· path(⽤于restful接⼝)--> 请求参数的获取:@PathVariable· body(不常⽤)· form(不常⽤) dataType:参数类型,默认String,其它值dataType="Integer" defaultValue:参数的默认值
@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")
})

2.4 @ApiResponses

@ApiResponses:⽤于请求的⽅法上,表示⼀组响应@ApiResponse:⽤在@ApiResponses中,⼀般⽤于表达⼀个错误的响应信息code:数字,例如400message:信息,例如"请求参数没填好"response:抛出异常的类
@ApiOperation(value = "select请求", notes = "多个参数,多种的查询参数类型")
@ApiResponses({@ApiResponse(code=400, message="请求参数没填好"),@ApiResponse(code=404, message="请求路径没有或⻚⾯跳转路径不对")
})

2.5 @ApiModel

@ApiModel:⽤于响应类上,表示⼀个返回响应数据的信息(这种⼀般⽤在post创建的时候,使⽤@RequestBody这样的场景,请求参数⽆法使⽤@ApiImplicitParam注解进⾏描述的时候)@ApiModelProperty:⽤在属性上,描述响应类的属性
@ApiModel(description= "返回响应数据")
public class RestMessage implements Serializable{@ApiModelProperty(value = "是否成功")private boolean success=true;@ApiModelProperty(value = "返回对象")private Object data;@ApiModelProperty(value = "错误编号")private Integer errCode;@ApiModelProperty(value = "错误信息")private String message;/* getter/setter */
}

3 用户模块注解配置

3.1 Controller 使用注解

@GetMapping("user/{userName}")
@ApiOperation(value = "根据⽤户名查询⽤户记录")
@ApiImplicitParam(name = "userName",value = "查询参数",required = true,paramType
= "path")
public User queryUserByUserName(@PathVariable String userName){return userService.queryUserByUserName(userName);
}
@ApiOperation(value = "根据⽤户id查询⽤户记录")
@ApiImplicitParam(name = "userId",value = "查询参数",required = true,paramType =
"path")
@GetMapping("user/id/{userId}")
public User queryUserByUserId(@PathVariable Integer userId,
HttpServletRequest request){return userService.queryUserByUserId(userId);
}
@GetMapping("user/list")
@ApiOperation(value = "多条件查询⽤户列表记录")
public PageInfo<User> list(UserQuery userQuery){return userService.queryUserByParams(userQuery);
}
@PutMapping("user")
@ApiOperation(value = "⽤户添加")
@ApiImplicitParam(name = "user",value = "⽤户实体类",dataType = "User")
public ResultInfo saveUser(@RequestBody User user){ResultInfo resultInfo=new ResultInfo();try {userService.saveUser(user);} catch (ParamsException e) {e.printStackTrace();resultInfo.setCode(e.getCode());resultInfo.setMsg(e.getMsg());}catch (Exception e) {e.printStackTrace();resultInfo.setCode(300);resultInfo.setMsg("记录添加失败!");}return resultInfo;
}
@PostMapping("user")
@ApiOperation(value = "⽤户更新")
@ApiImplicitParam(name = "user",value = "⽤户实体类",dataType = "User")
public ResultInfo updateUser(@RequestBody User user){ResultInfo resultInfo=new ResultInfo();try {userService.updateUser(user);} catch (ParamsException e) {e.printStackTrace();resultInfo.setCode(e.getCode());resultInfo.setMsg(e.getMsg());}catch (Exception e) {e.printStackTrace();resultInfo.setCode(300);resultInfo.setMsg("记录更新失败!");}return resultInfo;
}
@PutMapping("user/{userId}")
@ApiOperation(value = "根据⽤户id删除⽤户记录")
@ApiImplicitParam(name = "userId",value = "查询参数",required = true,paramType =
"path")
public ResultInfo deleteUser(@PathVariable Integer userId){ResultInfo resultInfo=new ResultInfo();try {userService.deleteUser(userId);} catch (ParamsException e) {e.printStackTrace();resultInfo.setCode(e.getCode());resultInfo.setMsg(e.getMsg());}catch (Exception e) {e.printStackTrace();resultInfo.setCode(300);resultInfo.setMsg("记录删除失败!");}return resultInfo;
}

3.2 JavaBean 使用注解

User.java

@ApiModel(description = "响应结果-⽤户信息")
public class User {@ApiModelProperty(value = "⽤户id",example = "0")private Integer id;@ApiModelProperty(value = "⽤户名")private String userName;@ApiModelProperty(value = "⽤户密码")private String userPwd;/*省略get|set*/
}

UserQuery.java

@ApiModel(description = "⽤户模块条件查询类")
public class UserQuery {@ApiModelProperty(value = "分⻚⻚码",example = "1")private Integer pageNum = 1;@ApiModelProperty(value = "每⻚⼤⼩",example = "10")private Integer pageSize = 10;@ApiModelProperty(value = "⽤户名")private String userName;/*省略get|set*/}

ResultInfo.java

@ApiModel(description = "响应结果 - Model信息")
public class ResultInfo {@ApiModelProperty(value = "响应状态码",example = "200")private Integer code=200;@ApiModelProperty(value = "响应消息结果")private String msg = "success";@ApiModelProperty(value = "响应具体结果信息")private Object result;/*省略get|set*/
}

4 Swagger2 接⼝⽂档访问

       启动⼯程,浏览器访问 :http://localhost:8080/springboot_mybatis/swagger-ui.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/454905.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

理解JVM

文章目录 前言一、JVM 内存区域划分二、JVM 中类加载的过程a.类加载的基本流程&#xff08;熟练背诵&#xff09;b.双亲委派模型 三、JVM 中的垃圾回收机制&#xff08;GC&#xff09;1.找到垃圾2.如何回收垃圾&#xff1f; 总结 前言 JVM 内部涉及到的内容是非常广泛的。咱们…

【Qt】Qt的介绍——Qt的概念、使用Qt Creator新建项目、运行Qt项目、纯代码方式、可视化操作、认识对象模型(对象树)

文章目录 Qt1. Qt的概念2. 使用Qt Creator新建项目3. 运行Qt项目3.1 纯代码方式实现3.2 可视化操作实现 4. 认识对象模型&#xff08;对象树&#xff09; Qt 1. Qt的概念 Qt 是一个跨平台的 C 图形用户界面应用程序开发框架。它是软件开发者提供的用于界面开发的程序框架&#…

PCC Net模型实现行人数量统计

关注底部公众号&#xff0c;回复暗号&#xff1a;13&#xff0c;免费获取600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 项目简介 PCC Net是一种用于拥挤场景下行人计数的深度学习模型。该项目的目标是利用神经网络&#xff0c;准确地统计给定区域内的行人数…

Visual Studio Code

代码自动保存 打开设置搜索auto save&#xff0c;设置为afterDelay 设置延迟时间&#xff0c;单位是毫秒 启用Ctrl鼠标滚轮对字体进行缩放 搜索Mouse Wheel Zoom&#xff0c;把该选项勾选上即可

Linux文件的查找和打包以及压缩

文件的查找 文件查找的用处&#xff0c;在我们需要文件但却又不知道文件在哪里的时候 文件查找存在着三种类型的查找 1、which或whereis&#xff1a;查找命令的程序文件位置 2、locate&#xff1a;也是一种文件查找&#xff0c;但是基于数据库的查找 3、find&#xff1a;针…

Artistic Oil Paint 艺术油画着色器插件

只需轻轻一点&#xff0c;即可将您的视频游戏转化为艺术品&#xff01;&#xff08;也许更多…&#xff09;。 ✓ 整个商店中最可配置的选项。 ✓ 六种先进算法。 ✓ 细节增强算法。 ✓ 完整的源代码&#xff08;脚本和着色器&#xff09;。 ✓ 包含在“艺术包”中。 &#x1f…

【学术论文投稿】自动化运维:解锁高效运维的密钥

【连续三届IEEE出版|EI检索】第三届图像处理、计算机视觉与机器学习国际学术会议&#xff08;ICICML 2024&#xff09;_艾思科蓝_学术一站式服务平台 更多学术会议请看&#xff1a;https://ais.cn/u/nuyAF3 目录 引言 一、自动化运维概述 1. 自动化运维的定义 2. 自动化运…

关于Docker

文章目录 DockerWSLWMWare虚拟机CentOS7安装dockerdocker基础命令docker数据卷挂载本地目录或文件 Docker Docker是一个快速构建、运行、管理应用的工具。 能够快速部署项目、项目依赖的组件、项目运行的环境。 项目传统的部署方式缺点&#xff1a; 各类环境、组件命令太多&…

科研进展 | RSE:全波形高光谱激光雷达数据Rclonte系列处理算法一

《环境遥感》&#xff08;Remote Sensing of Environment&#xff0c;IF11.1&#xff09;近日发表一项来自中国科学院空天信息创新研究院王力、牛铮研究员团队的全波形高光谱激光雷达&#xff08;hyperspectral LiDAR&#xff0c;HSL&#xff09;数据处理算法研究&#xff0c;论…

sentinel原理源码分析系列(八)-熔断

限流为了防止过度使用资源造成系统不稳&#xff0c;熔断是为了识别出”坏”资源&#xff0c;避免好的资源受牵连(雪崩效应)&#xff0c;是保证系统稳定性的关键&#xff0c;也是资源有效使用的关键&#xff0c;sentinel熔断插槽名称Degrade(降级)&#xff0c;本人觉得应该改为熔…

多级缓存-案例导入说明

为了演示多级缓存,我们先导入一个商品管理的案例,其中包含商品的CRUD功能。我们将来会给查询商品添加多级缓存。 1.安装MySQL 后期做数据同步需要用到MySQL的主从功能,所以需要大家在虚拟机中,利用Docker来运行一个MySQL容器。 1.1.准备目录 为了方便后期配置MySQL,我们…

docker sameersbn/bind dns服务器

1. 安装 #下载docker 镜像 docker pull sameersbn/bind#运行 53端口若被占用会启动失败 docker run --name dns -d --restartalways \ --publish 53:53/tcp \ --publish 53:53/udp \ --publish 10000:10000/tcp \ -v /etc/localtime:/etc/localtime \ -v /data/bind/:/data \…

ubuntu2204配置cuda

ubuntu2204配置cuda ✅系统版本&#xff1a;ubuntu22.04 LTS ✅显卡&#xff1a;英伟达2070S ✅CPU&#xff1a;i9 10900 ✅主板&#xff1a;戴尔品牌机 教程&#x1f4a8;&#x1f4a8;&#x1f4a8;&#x1f4a8;&#xff1a; ps&#xff1a;本人按照该方法一遍成功&#…

grafana 配置prometheus

安装prometheus 【linux】麒麟v10安装prometheus监控&#xff08;ARM架构&#xff09;-CSDN博客 登录grafana 访问地址&#xff1a;http://ip:port/login 可以进行 Grafana 相关设置&#xff08;默认账号密码均为 admin&#xff09;。 输入账户密码 添加 Prometheus 数据源…

【Axure高保真原型】标签管理可视化驾驶舱长页面案例

今天和大家分享标签管理可视化驾驶舱长页面案例的原型模板&#xff0c;包括我的工作、通告消息、标签总体调用趋势、标签应用业务场景对比、标签使用排名、各个标签使用情况……具体效果可以点击下方视频观看或打开下方预览地址查看哦 【原型效果】 【Axure高保真原型】标签管…

PhpSpreadsheet创建带复杂表头的excel数据

目录 一:背景 二&#xff1a;excel表头数据实现 三&#xff1a;excel渲染数据实现&#xff1a; 四&#xff1a;最终效果如下&#xff1a; 一:背景 最近需要统计一些数据&#xff0c;导出到excel&#xff0c;主要是一些区域的人员销售统计数据&#xff0c;涉及到复杂的表头和…

【银河麒麟高级服务器操作系统-实例】集群存储文件系统异常,本地复现+详细分析+解决建议

了解更多银河麒麟操作系统全新产品&#xff0c;请点击访问 麒麟软件产品专区&#xff1a;https://product.kylinos.cn 开发者专区&#xff1a;https://developer.kylinos.cn 文档中心&#xff1a;https://documentkylinos.cn 服务器环境以及配置 【机型】物理机 TG225 B1 处…

ElasticSearch-7.17.10集群升级至ElasticSearch-7.17.24

文章目录 集群概览 主机名系统版本es01CentOS_7.6-aaarch64ElasticSearch-7.17.10es02CentOS_7.6-aaarch64ElasticSearch-7.17.10es03CentOS_7.6-aaarch64ElasticSearch-7.17.10 需求 1. 将三台ES节点从ElasticSearch-7.17.10升级至ElasticSearch-7.17.24&#xff1b; 2. 保证…

安装Python及pip使用方法详解

一、安装Python Python是一种广泛使用的高级编程语言&#xff0c;其安装过程相对简单。以下是具体步骤&#xff1a; 访问Python官网&#xff1a; 打开浏览器&#xff0c;访问Python的官方网站[python.org](https://www.python.org/)&#xff0c;确保下载的是最新版本的Python安…

Leetcode 最小路径和

这段代码解决的是LeetCode第64题“最小路径和”&#xff0c;其核心思想是动态规划&#xff08;Dynamic Programming&#xff0c;简称DP&#xff09;。以下是算法的具体解释&#xff1a; 1. 问题描述&#xff1a; 我们给定一个包含非负整数的 m x n 网格&#xff08;grid&…