SpringBoot整合Swagger2

SpringBoot整合Swagger2

  • 1.什么是Swagger2?(应用场景)
  • 2.项目中如何使用
    • 2.1 导入依赖
    • 2.2 编写配置类
    • 2.3 注解使用
      • 2.3.1 controller注解:
      • 2.3.2 方法注解
      • 2.3.3 实体类注解
      • 2.3.4 方法返回值注解
      • 2.3.5 忽略的方法
  • 3.UI界面

1.什么是Swagger2?(应用场景)

Swagger2 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务的接口文档。

进一步说,这个接口文档就是写给前端用的。有时候后端可能会忘记编写接口文件,那么Swagger2就帮后端开发者写。

2.项目中如何使用

2.1 导入依赖

这里导入了两个依赖包,第二个依赖包主要是访问swagger2UI界面

    <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>

2.2 编写配置类

这个配置类的写法比较固定,其中getApiInfo()方法主要设置接口文档的一些信息,包括标题、描述以及版本等。api()这个Bean写法比较固定,其中basePackage中的地址不必要搞错,针对于不同接口,更换不同地址。

@Configuration
@EnableSwagger2
public class Swagger2Config {@Beanpublic Docket api() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(getApiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.rql.controller")).paths(PathSelectors.any()).build();}private ApiInfo getApiInfo(){Contact contact = new Contact("name", "https://blog.csdn.net/qq_42569028?type=blog", "1476804025@qq.com");return new ApiInfoBuilder().title("标题:图书管理系统").description("描述:对图书进行增删改查操作").version("版本:项目版本V1.0").contact(contact).build();}
}

2.3 注解使用

2.3.1 controller注解:

@Api:修饰整个类,描述Controller的作用
tags:“说明该类的作用”

@RestController
@RequestMapping("/books")
@Api(tags = "图书管理系统")
public class BookController {

2.3.2 方法注解

@ApiOperation:对类中的方法进行描述

  • value=“说明方法的作用”

  • notes=“方法的备注说明”

@ApiImplicitParams:描述由多个 @ApiImplicitParam 注解的参数组成的请求参数列表
@ApiImplicitParam :描述一个请求参数,可以配置参数的中文含义,还可以给参数设置默认值

    name:参数名value:参数的汉字说明、解释required:参数是否必须传dataType :参数类型,默认String,其它值dataType=“int”defaultValue:参数的默认值paramType:参数放在哪个地方header --> 请求参数的获取:@RequestHeaderquery --> 请求参数的获取:@RequestParampath(用于restful接口)–> 请求参数的获取:@PathVariablebody(请求体)–> @RequestBody User userform(普通表单提交)
    @GetMapping("{pageNo}/{pageSize}")@ApiOperation("分页查询数据信息")@ApiImplicitParams({@ApiImplicitParam(name = "pageNo",value = "当前所在的页数"),@ApiImplicitParam(name = "pageSize",value = "分页的大小"),@ApiImplicitParam(name = "book",value = "书籍信息")})public R getPages(@PathVariable Integer pageNo, @PathVariable Integer pageSize,Book book){

2.3.3 实体类注解

@ApiModel:用对象来接收参数时,用于描述对象(实体类中的注解)

(这种一般用在post创建的时候,使用 @RequestBody 这样的场景,请求参数无法使用 @ApiImplicitParam 注解进行描述的时候 )

@ApiProperty:用对象接收参数时,描述对象的一个字段(实体类中属性的注解)

@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(description = "书籍信息")
public class Book {private Integer id;@ApiModelProperty(value = "书籍类型")private String type;@ApiModelProperty(value = "书籍名称")private String name;@ApiModelProperty(value = "书籍描述")private String description;private Integer deleted;
}

2.3.4 方法返回值注解

@ApiResponses:方法返回对象的说明
@ApiResponse:每个参数的说明
code:数字,例如400
message:信息,例如"请求参数没填好"


@ApiResponses({@ApiResponse(code = 200,message = "成功获取书籍信息"),@ApiResponse(code=400,message = "查询逻辑有问题")})public R getById(@PathVariable Integer id){return new R(true,bookService.getById(id));}

2.3.5 忽略的方法

@ApiIgnore:接口方法注解,添加此注解的方法将不会生成到接口文档中

3.UI界面

访问地址:http://localhost:8081/swagger-ui.html

在这里插入图片描述

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

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

相关文章

短视频矩阵系统----技术源头开发

短视频矩阵系统--- 1. 确定账号类型和目标受众 2. 准备账号资料 3. 搭建系统框架 4. 开发核心功能 5. 测试和调试 6. 部署和维护 7. 推广和运营 在开发短视频账号矩阵系统源码时&#xff0c;可以使用一些开源框架和工具来提高开发效率和降低开发难度。同时&#xff0c;需要组…

抓取电商产品数据的方法|PHP|Python多语言环境|高并发需求|电商商品API接口数据采集

电商商品数据的抓取|电商平台商品API接口 客户在搭建电商网站时经常提出的诉求和相应的解决方案如下&#xff1a; 1. **网站设计和用户体验**&#xff1a; - 诉求&#xff1a;希望有吸引力、易用性强的网站设计&#xff0c;提升用户体验。 - 解决方案&#xff1a;设计专…

无人机--行业生命周期分析

行业生命周期:无人机行业生命周期还相对较短&#xff0c;但已经经历了多个阶段的发展。从最初的军用无人机&#xff0c;到近年来民用无人机和商业无人机的快速发展&#xff0c;无人机行业正逐渐走向成熟阶段。未来随着技术的不断进步和应用领域的不断拓展&#xff0c;无人机行业…

项目7-音乐播放器5+注册账号

1.前端代码 MAPPER Insert("insert into user(username,password) values (#{username},#{password}) ")Integer insertUserInfo(String username,String password); Service public Result insertUserInfo(String username, String oldpassword,String newpasswo…

如何关掉地址空间随机化

如果我们的ru没有密码的话我们要先建一个密码 接着输入 su 进入root 接着输入 echo 0 > /proc/sys/kernel/randomize_va_space 就可以啦 接着可以cat查看是不是显示0&#xff0c;是的话就成功了

【Linux的git操作】

Linux学习笔记---010 Linux的git操作1、什么是gitee2、git 准备工作2.1、查看是否安装了 git 版本工具2.2、安装 git 工具/更新成最新版本2.3、在gitee上创建远程仓库&#xff08;略&#xff09;2.4、提交file的初始化操作 3、git的“三板斧”3.1、add3.2、commit3.3、push3.4、…

Flutter 像素编辑器#03 | 像素图层

theme: cyanosis 本系列&#xff0c;将通过 Flutter 实现一个全平台的像素编辑器应用。源码见开源项目 【pix_editor】 《Flutter 像素编辑器#01 | 像素网格》《Flutter 像素编辑器#02 | 配置编辑》《Flutter 像素编辑器#03 | 像素图层》 上一篇我们实现了编辑配置&#xff0c;…

React + 项目(从基础到实战) -- 第八期

ajax 请求的搭建 引入mockAP接口设计AJAX 通讯 前置知识 HTTP 协议 , 前后端通讯的桥梁API : XMLHttpRequest 和 fetch常用工具axios mock 引入 Mock.js (mockjs.com) 使用 mockJS 前端代码中引入 mockJs定义要模拟的路由 , 返回结果mockJs 劫持ajax请求(返回模拟的结果)…

2024运营级租房源码管理PHP后台+uniapp前端(app+小程序+H5)

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 一、详细介绍 房产系统 一款基于ThinkPHPUniapp开发的房产管理系统&#xff0c;支持小程序、H5、APP&#xff1b;包含房客、房东、经纪人三种身份。核心功能有&#xff1a;新盘销售、房屋租赁、地图找房、房源代理、…

RestFul 风格(SpringMVC学习笔记三)

1、什么是Restful风格&#xff1a; Restful就是一个资源定位及资源操作的风格。不是标准也不是协议&#xff0c;只是一种风格。基于这个风格设计的软件可以更简洁&#xff0c;更有层次&#xff0c;更易于实现缓存等机制。 2、使用Restful风格 接上一个笔记的测试类 package…

『Django』创建app(应用程序)

theme: smartblue 本文简介 点赞 关注 收藏 学会了 在《『Django』环境搭建》中介绍了如何搭建 Django 环境&#xff0c;并且创建了一个 Django 项目。 在刚接触 Django 时有2个非常基础的功能是需要了解的&#xff0c;一个是“app”(应用程序)&#xff0c;另一个是 url(路由…

AIGC算法2:LLM的复读机问题

1. 什么是LLM的复读机问题 字符级别重复&#xff0c;指大模型针对一个字或一个词重复不断的生成例如在电商翻译场景上&#xff0c;会出现“steckdose steckdose steckdose steckdose steckdose steckdose steckdose steckdose…”&#xff1b;语句级别重复&#xff0c;大模型针…

中文编程入门(Lua5.4.6中文版)第十二章 Lua 协程 参考《愿神》游戏

在《愿神》的提瓦特大陆上&#xff0c;每一位冒险者都拥有自己的独特力量——“神之眼”&#xff0c;他们借助元素之力探索广袤的世界&#xff0c;解决谜题&#xff0c;战胜敌人。而在提瓦特的科技树中&#xff0c;存在着一项名为“协同程序”的高级秘术&#xff0c;它使冒险者…

【第十二届“泰迪杯”数据挖掘挑战赛】【2024泰迪杯】B题基于多模态特征融合的图像文本检索—更新(正式比赛)

【第十二届“泰迪杯”数据挖掘挑战赛】【2024泰迪杯】B题基于多模态特征融合的图像文本检索—更新&#xff08;正式比赛&#xff09; 往期链接&#xff1a; 【第十二届“泰迪杯”数据挖掘挑战赛】【2024泰迪杯】B题基于多模态特征融合的图像文本检索—解题全流程&#xff08;…

设计模式-访问者模式(Visitor)

1. 概念 访问者模式&#xff08;Visitor Pattern&#xff09;是一种行为型设计模式。是一种将数据操作与数据结构分离的设计模式&#xff0c;其主要目的是将数据结构与数据操作解耦。 2. 原理结构图 图1 Visitor&#xff08;访问者&#xff09;&#xff1a;接口或抽象类&am…

47.基于SpringBoot + Vue实现的前后端分离-校园外卖服务系统(项目 + 论文)

项目介绍 本站是一个B/S模式系统&#xff0c;采用SpringBoot Vue框架&#xff0c;MYSQL数据库设计开发&#xff0c;充分保证系统的稳定性。系统具有界面清晰、操作简单&#xff0c;功能齐全的特点&#xff0c;使得基于SpringBoot Vue技术的校园外卖服务系统设计与实现管理工作…

【前端Vue】Vue从0基础完整教程第7篇:组件化开发,组件通信【附代码文档】

Vue从0基础到大神学习完整教程完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;vue基本概念&#xff0c;vue-cli的使用&#xff0c;vue的插值表达式&#xff0c;{{ gaga }}&#xff0c;{{ if (obj.age > 18 ) { } }}&#xff0c;vue指令&#xff0c;综合…

Python基于Django搜索的目标站点内容监测系统设计,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

全国产化无风扇嵌入式车载电脑在车队管理嵌入式车载行业应用

车队管理嵌入式车载行业应用 车队管理方案能有效解决车辆繁多管理困难问题&#xff0c;配合调度系统让命令更加精确有效执行。实时监控车辆状况、行驶路线和位置&#xff0c;指导驾驶员安全有序行驶&#xff0c;有效降低保险成本、事故概率以及轮胎和零部件的磨损与损坏。 方…

LeetCode刷题总结 | 图论3—并查集

并查集理论基础 1.背景 首先要知道并查集可以解决什么问题呢&#xff1f; 并查集常用来解决连通性问题。大白话就是当我们需要判断两个元素是否在同一个集合里的时候&#xff0c;我们就要想到用并查集。 并查集主要有两个功能&#xff1a; 将两个元素添加到一个集合中。判…