聊聊开发一个接口用到哪些Swagger 注解

文章目录

  • 常用swagger注解
    • 类注解
    • 方法注解
    • 字段注解
  • Swagger配置
    • 引入依赖
    • 编写配置类
    • 静态资源映射
    • 访问swagger ui

为什么要聊Swagger呢,原因是我发现实际开发中前端同事每次都需要问我枚举是什么,经过反思,我觉得是接口文档写的不够好。所以整理一下如何用Swagger注解生成一个好的接口文档。

常用swagger注解

类注解

最常用的类注解是@Api,它的作用是标注这个类是用来干嘛的,不写默认是Controller的类名用-连接,不太好理解。差别如下:

**@Api**中最重要的参数是tags,其他的值可以不写,示例:

@RestController
@RequestMapping("/subject")
@Slf4j
@Api(tags = "题目管理")
public class SubjectController {// 省略
}

方法注解

最常用的方法注解是@ApiOpertion,它的作用是描述接口的作用和请求方式。不写默认就是方法名,也是不好理解。差别如下:

这个注解重要的两个参数value跟httpMethod

@PostMapping("/add")
@ApiOperation(value = "新增题目", httpMethod = "POST")
public Result<Boolean> add(@RequestBody SubjectInfoDTO subjectInfoDTO) {// 省略
}

字段注解

最常用的字段注解是@ApiModelProperty,这个注解的需要关注的参数有几个:

@ApiModelProperty(value = "分类id",required = true,example = "1",allowableValues = "1,2,3,4,5")
private Long categoryId;
  1. value:对应下图中的参数说明
  2. required:是否必填,默认是false
  3. example:示例值
  4. allowableValues:枚举值

Swagger配置

首先用Swagger的前提是项目里集成了swagger相关的依赖。相关步骤如下:

引入依赖

目前swagger有2种不同的UI,分别对应不同的pom依赖,两种都可以,建议使用本文的这种,增强版的UI更好用。

<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version>
</dependency>
<dependency><groupId>com.github.xiaoymin</groupId><artifactId>swagger-bootstrap-ui</artifactId><version>1.9.6</version>
</dependency>

编写配置类

@Configuration
@EnableSwagger2
public class SwaggerConfig {@Beanpublic Docket createRestApi() {return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.basePackage("com.jayden.club.subject.application.controller")).paths(PathSelectors.any()).build().apiInfo(new ApiInfoBuilder().title("Jayden Club Subject API").description("Jayden Club Subject API Documentation").version("1.0.0").build());}}

代码解释,最重要的是.apis这个参数,其他照抄即可

  • 注解:@Bean注解的意思是,这个方法会生成一个对象,然后把这个对象注册到Spring的应用环境里。简单来说,当你启动Spring Boot应用的时候,这个方法就会运行,它产生的Docket对象会被Spring管理起来,用来配置Swagger API文档。
  • 创建Docket对象:new Docket(DocumentationType.SWAGGER_2)创建了一个新的Docket实例,指定了文档类型为Swagger 2.0。
  • 配置API选择器:.apis(RequestHandlerSelectors.basePackage(“com.jayden.club.subject.application.controller”))**指定了哪些包下的API会被Swagger文档所包含。**这里选择了com.jayden.club.subject.application.controller包下的所有API。
  • 配置路径选择器:.paths(PathSelectors.any())表示包含所有路径,即不限制哪些API路径会被Swagger记录。
  • 设置API信息:.apiInfo(…)方法用于设置API的元信息,包括标题、描述和版本等。这些信息将显示在生成的Swagger文档中。
  • 返回值:该方法最终返回一个配置完成的Docket对象,这个对象包含了生成Swagger API文档所需的所有信息。

静态资源映射

按照上面两步后在浏览器输入[http://localhost:8080/doc.html](http://localhost:8080/doc.html)就可以看到swagger的UI界面了。如果访问不了大概率是静态资源没配。配置方式如下:

@Configuration
public class GlobalConfig extends WebMvcConfigurationSupport {@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");super.addResourceHandlers(registry);}// 省略其他方法}

通过请求路径可以知道我们请求的是服务上一个叫doc.html的静态文件。这里有两个问题:

  1. 我们好像没有写doc.html文件,这个文件在哪里?
  2. 怎么路由到doc.html?

先看第一个问题,其实这是swagger-bootstrap-ui包中已经有的页面,全局搜索doc.html即可搜索到。

第二个问题就跟上面的代码有关系了,其实把这两个参数作用讲明白就行了

  • addResourceHandler(“doc.html”):这个方法用于指定访问静态资源的URL模式。在这个例子中,它告诉Spring Boot,当请求URL匹配到doc.html时,应该将其作为一个静态资源来处理。
  • addResourceLocations(“classpath:/META-INF/resources/”):这个方法用于指定静态资源文件存放的位置。在这个例子中,它指定了静态资源位于类路径(classpath)下的/META-INF/resources/目录中。这意味着,当你访问doc.html时,Spring Boot会从该目录下查找并返回相应的文件。可以看下截图doc.html的位置。

访问swagger ui

在以上步骤后在浏览器中输入[http://localhost:8080/doc.html](http://localhost:8080/doc.html)就可以看到swagger ui的主页面。

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

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

相关文章

【Nginx系列】多个路径指向一个地址

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

fastadmin修改后台登录背景

背景 fastadmin 用习惯了&#xff0c;但是登录界面真的不好看&#xff0c;今天就修改一下。先看界面&#xff1a; 解决方案 1.安装插件&#xff1a;后台登录背景。 2.上传固定图片修改登录页面为如下&#xff1a; <!DOCTYPE html> <html> <head>{include…

Unreal Engine Groom打包没有物理模拟

编辑器中运行头发有物理模拟效果&#xff0c;打包后没有 Project Setting 加/HairStrands

MCU-USB转UART的底层逻辑

USB/UART Bridge: Understand Everything in Animations - Parlez-vous Tech 没有 USB 端口的 PC 如何与单片机通信&#xff1f; 答案就在 USB/UART 桥接器中。 无论是用于调试、连接 IoT 传感器还是进行工业监督&#xff0c;此桥接器都简化了硬件集成并使通信更加可靠。以…

仿真键盘输入遇到Edge环境不识别 回车符如何处理

这个问题我也是最近才遇到&#xff0c;可能现在大家都喜欢用新架构&#xff0c;基于网页来写应用管理软件。 当遇到Edge环境下&#xff0c;文本框不识别回车符如何处理&#xff0c;根据笔者经验可通过配置Edge 基于键盘管理设置来解决这个事情。如图 即在Edge浏览器环境下&…

在做题中学习(79):最小K个数

解法&#xff1a;快速选择算法 说明&#xff1a;堆排序也是经典解决问题的算法&#xff0c;但时间复杂度为&#xff1a;O(NlogK)&#xff0c;K为k个元素 而将要介绍的快速选择算法的时间复杂度为: O(N) 先看我的前两篇文章&#xff0c;分别学习&#xff1a;数组分三块&#…

【html网页页面009】html+css制作学校官网主题网页制作含登录(5页面附效果及源码)

校园网站主题网页制作 &#x1f964;1、写在前面&#x1f367;2、涉及知识&#x1f333;3、网页效果&#x1f308;4、网页源码4.1 html4.2 CSS4.3 源码获取w034学校网页源码及介绍链接 &#x1f40b;5、作者寄语 &#x1f964;1、写在前面 学校网站主题的网页 一共5个页面 网…

2024-12-08 数字人最新论文更新(MEMO, INFP, IF-MDM, SINGER, One Shot, One Talk, FLOAT等)

2024-12-08 数字人最新论文更新(MEMO, INFP, IF-MDM, SINGER, One Shot, One Talk, FLOAT等) 汇总一下最近一个星期的一些数字人论文的更新&#xff0c;我觉得比较有意思的一些文章比如SINGER&#xff0c;用Diffusion来做sing的talking head&#xff0c;确实是一个不错的文章&…

亚马逊云科技用生成式AI,向开发的复杂性动手了

生成式 AI、分布式扩展功能全面进化&#xff0c;还降价了。 同一天的发布&#xff0c;完全不同的方向。 今天凌晨&#xff0c;云计算巨头亚马逊云科技的 re:Invent 与大号创业公司 OpenAI 的发布「撞了车」。后者公布了一系列生成式 AI 应用&#xff0c;价格更贵、性能更强大&a…

HTML+CSS+JS实现简单的打字机

HTMLCSSJS实现简单的打字机 js /*** 动态打字效果函数* (select和element只能选择一个)* param {Object} options - 配置选项* param {string} options.select - 选择器&#xff0c;用于定位要显示文本的DOM元素("#id"或".class")* param {Object} optio…

[Collection与数据结构] 位图与布隆过滤器

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

探秘AES加密算法:多种Transformation全解析

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…

【Liunx篇】基础开发工具 - vim

文章目录 一.vim的基本概念1.正常/命令模式2.插入模式3.底行模式/末行模式4.视图模式5.替换模式 二.vim的基本操作1.进入vim&#xff1a;2.退出vim: 三.vim正常模式命令集1.光标定位&#xff1a;2.复制/粘贴3.撤销4.剪切/删除5. 更改 四.vim底行模式命令集1.保存/退出2.调出行号…

基于 Python、OpenCV 和 PyQt5 的人脸识别上课打卡系统

大家好&#xff0c;我是Java徐师兄&#xff0c;今天为大家带来的是基于 Python、OpenCV 和 PyQt5 的人脸识别上课签到系统。该系统采用 Python 语言开发&#xff0c;开发过程中采用了OpenCV框架&#xff0c;Sqlite db 作为数据库&#xff0c;系统功能完善 &#xff0c;实用性强…

在Linux(ubuntu22.04)搭建rust开发环境

1.安装rust 1.安装curl: sudo apt install curl 2.安装rust最新版 curl --proto ‘https’ --tlsv1.2 https://sh.rustup.rs -sSf | sh 安装完成后出现&#xff1a;Rust is installed now. Great! 重启当前shell即可 3.检验是否安装成功 rustc --version 结果出现&…

手机租赁系统全面解析与开发指南

内容概要 手机租赁系统已经成为现代商业中不可或缺的一部分&#xff0c;尤其是在智能手机普及的时代。随着消费者对新机型兴趣的不断增加&#xff0c;大家纷纷走上了“试一试再买”的道路&#xff0c;手机租赁这条路因此越走越宽。这部分的市场需求让创业者们看到了机会。不仅…

vue vxe-table 实现财务记账凭证

使用 vxe-table 实现财务记账凭证非常简单&#xff0c;实现在线实时编辑的记账凭证、自动合计金额等 官网&#xff1a;https://vxetable.cn/ <template><div><vxe-grid ref"gridRef" v-bind"gridOptions" v-on"gridEvents">&…

OpenNebula 开源虚拟平台,对标 VMware

Beeks Group 主要为金融服务提供商提供虚拟专用服务器和裸机服务器。该公司表示&#xff0c;转向 OpenNebula 不仅大幅降低了成本&#xff0c;还使其虚拟机效率提升了 200%&#xff0c;并将更多裸机服务器资源用于客户端负载&#xff0c;而非像以往使用 VMware 时那样用于虚拟机…

英文论文翻译成中文,怎样翻译更地道?

我是娜姐 迪娜学姐 &#xff0c;一个SCI医学期刊编辑&#xff0c;探索用AI工具提效论文写作和发表。 最近学员群有同学问&#xff0c;英文论文翻译成中文的解决方案—“DeepL翻译出来的内容总是有点别扭&#xff0c;ChatGPT能翻译的地道一些吗&#xff1f;”。 正好有位刚加入的…

算法-字符串-165.比较版本号

一、题目 二、思路解析 1.思路&#xff1a; 比较的是两个版本号它们以“.”作为分割的部分的有效值&#xff08;即数值&#xff09;是否一致 2.常用方法&#xff1a; 1.s.split("\\规则")&#xff0c;将字符串按参数规则进行分割并存储在字符串数组中 String[] str …