Swagger的使用

一、引入Maven坐标

<dependency><groupld>com.github.xiaoymin</groupld><artifactld>knife4j-spring-boot-starter</artifactld><version>3.0.2</version>
</dependency>

二、配置类中添加配置

/*** 通过knife4j生成接口文档* @return*/@Beanpublic Docket docket() {ApiInfo apiInfo = new ApiInfoBuilder().title("苍穹外卖项目接口文档").version("2.0").description("苍穹外卖项目接口文档").build();Docket docket = new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo).select().apis(RequestHandlerSelectors.basePackage("com.sky.controller")).paths(PathSelectors.any()).build();return docket;}

三、配置类继承WebMvcConfigurationSupport类重写addResourceHandlers()方法完成资源映射

/*** 设置静态资源映射* @param registry*/protected void addResourceHandlers(ResourceHandlerRegistry registry) {//将doc.html文件映射(存放)到resources目录下registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");}

完整代码示例:

@Configuration
@Slf4j
public class WebMvcConfiguration extends WebMvcConfigurationSupport {@Autowiredprivate JwtTokenAdminInterceptor jwtTokenAdminInterceptor;/*** 注册自定义拦截器** @param registry*/protected void addInterceptors(InterceptorRegistry registry) {log.info("开始注册自定义拦截器...");registry.addInterceptor(jwtTokenAdminInterceptor).addPathPatterns("/admin/**").excludePathPatterns("/admin/employee/login");}/*** 通过knife4j生成接口文档* @return*/@Beanpublic Docket docket() {ApiInfo apiInfo = new ApiInfoBuilder().title("苍穹外卖项目接口文档").version("2.0").description("苍穹外卖项目接口文档").build();Docket docket = new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo).select().apis(RequestHandlerSelectors.basePackage("com.sky.controller")).paths(PathSelectors.any()).build();return docket;}/*** 设置静态资源映射* @param registry*/protected void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");}
}

常用注解

在Swagger 2中,有几个核心的注解用于对RESTful API进行文档化和交互式测试。以下是 Swagger 2 常用的一些注解:

  • @Api
    作用:应用于控制器类上,表示这个类是一个API资源。
    示例:
     @Api(value = "Banner管理", description = "主页轮播图管理接口")@RestController@RequestMapping("/api/banner")public class BannerController {// ...}
  • @ApiOperation
    作用:应用于控制器类中的方法上,描述一个HTTP请求的操作(如GET、POST等)及其功能。
    属性:value(方法的简短描述)、notes(更详细的说明或备注信息)、httpMethod(请求类型,默认根据@RequestMapping确定)、response(响应体的引用,如果使用了@ApiResponses则不需要)等。
    示例:
     @ApiOperation(value = "获取指定ID的轮播图", notes = "通过ID获取详细轮播图信息")@GetMapping("/{id}")public ResponseEntity<Banner> getBanner(@PathVariable Long id) {// ...}
  • @ApiParam
    作用:应用于方法参数、方法返回值或实体类字段上,为参数提供元数据,包括名称、描述、是否必填等。
    属性:name(参数名)、value(参数说明文字)、required(是否必须提供该参数,默认false)、dataType(数据类型,默认自动推断)、defaultValue(默认值)等。
    示例:
     @GetMapping@ApiOperation("搜索轮播图")public ResponseEntity<List<Banner>> searchBanners(@ApiParam(name = "keyword", value = "搜索关键词", required = true)@RequestParam String keyword) {// ...}
  • @ApiModel
    作用:应用于实体类上,用于描述整个模型的信息,通常与@ApiModelProperty配合使用。
    属性:value(模型名称),description(模型的描述信息)。
  • @ApiModelProperty
    作用:应用于实体类的属性上,用于详细描述模型属性的信息。
    属性:同@ApiParam类似,包括name、value、required 等。
    示例:
     @ApiModel(value = "轮播图实体", description = "轮播图的基本信息")public class Banner {@ApiModelProperty(value = "主键ID", required = true)private Long id;// 其他字段和getter/setter...}

访问:项目启动路径:端口/doc.html

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

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

相关文章

PagedAttention: from interface to kernal

1 Overview PagedAttention灵感来自于操作系统中虚拟内存和分页的经典思想&#xff0c;它可以允许在非连续空间立存储连续的KV张量。具体来说&#xff0c;PagedAttention把每个序列的KV缓存进行了分块&#xff0c;每个块包含固定长度的token&#xff0c;而在计算attention时可…

自己造messagebox轮子

父组件中&#xff1a; import floatBox from ../messageBox data里加参数alertBox: 0, method中 changeAlertBox() {if (this.alertBox 0) {this.alertBox 1this.$refs.floatBox.changeAlertBox()} else {this.alertBox 0this.$refs.floatBox.changeAlertBox()}console.log…

MCU、MPU、SOC简介

文章目录 前言一、MCU二、MPU三、SOC总结 前言 随着处理器技术的不断发展&#xff0c;CPU(Central Processing Unit)的发展逐渐出现三种分支&#xff0c;分别是MCU(Micro Controller Unit&#xff0c;微控制器单元) 和MPU&#xff08;Micro Processor Unit&#xff0c;微处理器…

Angular系列教程之管道

文章目录 管道的基本概念使用内置管道创建自定义管道总结 在Angular中&#xff0c;管道&#xff08;Pipe&#xff09;是一个非常重要的概念。它们允许我们对数据进行转换、格式化和显示&#xff0c;并且可以轻松地在模板中使用。本篇文章将介绍Angular中的管道概念&#xff0c;…

正则表达式 (用于灵活匹配文本的表达式)

目录 . * . 用于匹配任意单个字符&#xff0c;除了换行符。 例如使用正则表达式 a.b, 它可以匹配aab、acb、a#b * 用于匹配前一个字符零次或多次。 例如&#xff0c;使用正则表达式 ab*c&#xff0c;它可以匹配 "ac"、"abc"、"abbc"&#…

SL3036国产新品 48V/60V电动车里程增程器供电芯片

随着电动车的普及&#xff0c;里程焦虑成为了很多电动车用户面临的问题。为了解决这个问题&#xff0c;SL3036国产新品应运而生&#xff0c;它是一款48V/60V电动车里程增程器供电芯片。这款芯片的出现&#xff0c;为电动车用户提供了更加可靠的续航里程&#xff0c;让他们在出行…

Linux 修改文件名称

创建文件 aaa [root@host144x180 qiao]# touch aaa [root@host144x180 qiao]# ll 总用量 4 -rw-r--r-- 1 root root 0 1月 16 13:57 aaa drwxr-xr-x 3 root root 4096 8月 12 17:14 update修改文件名称 cpmvrename复制 保留源文件:cp 源文件 目标文件[root@host144x18…

LVM逻辑卷扩容

生产环境LVM磁盘扩容 使用df -Th 命令查看磁盘信息 ,可以看到当前LVM逻辑卷容量是38G [rootZ ~]# df -TH 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root xfs 38G 2.4G 36G 7% / devtmpfs devtmpfs …

ruoyi 前后端分离学习

1.mybatisconfig 重写了sqlSessionFactory 方法&#xff0c;目前只typeAliasesPackage、mapperLocations、configLocation 新增配置要修改该方法 ruoyi-framework/src/main/java/com/ruoyi/framework/config/MyBatisConfig.java Beanpublic SqlSessionFactory sqlSessionFacto…

使用AI自动生成PPT提高制作效率

使用AI自动生成PPT提高制作效率 在制作PPT方面&#xff0c;很多制作者都会轻易跳进一个怪圈&#xff1a;“我要制作一个关于关爱老人的PPT&#xff0c;该怎么做呢&#xff0c;有模板没有?”这个会涉及很多逻辑需要经过不断的思考&#xff0c;制作PPT要通过很多素材、使用技巧、…

Python 配置 pip 国内源

Python 配置 pip 国内源 1. 配置为阿里源2. 配置为清华大学源 1. 配置为阿里源 pip config set global.index-url https://mirrors.aliyun.com/pypi/simple pip config set install.trusted-host mirrors.aliyun.com输出&#xff0c; Writing to C:\Users\thinkpad\AppData\…

3DMax的位图是什么? 3DMax的位图介绍

在3dmax建模中&#xff0c;使用贴图时的位图的频率是很高的。主要原因便就是位图就是我们平常说的图片&#xff0c;有各种格式的图片&#xff0c;能把这张图片贴到物体的表面&#xff0c;呈现效果进行渲染。 3damx的位图支持多种格式&#xff0c;比如jpg、png等等。 当然常用的…

el-table右固定最后一列显示不全或者是倒数第二列无边框线

问题图片&#xff1a; 解决方式1&#xff1a; >>>.el-table__row td:not(.is-hidden):last-child { border-left:1px solid #EBEEF5; } >>>.el-table__header th:not(.is-hidden):last-child{ border-left:1px solid #EBEEF5; } >>>.el-table__head…

C语言--质数算法和最大公约数算法

文章目录 1.在C语言中&#xff0c;判断质数的常见算法有以下几种&#xff1a;1.1.试除法&#xff08;暴力算法&#xff09;&#xff1a;1.2.优化试除法&#xff1a;1.3.埃拉托色尼筛法&#xff1a;1.4.米勒-拉宾素性检验&#xff1a;1.5.线性筛法&#xff1a;1.6.费马小定理&am…

最新可用GPT-3.5、GPT-4、Midjourney绘画、DALL-E3文生图模型教程【宝藏级收藏】

一、前言 ChatGPT3.5、GPT4.0、GPT语音对话、Midjourney绘画&#xff0c;文档对话总结DALL-E3文生图&#xff0c;相信对大家应该不感到陌生吧&#xff1f;简单来说&#xff0c;GPT-4技术比之前的GPT-3.5相对来说更加智能&#xff0c;会根据用户的要求生成多种内容甚至也可以和…

What is `@ResponseBody` does?

ResponseBody 是SpringMVC框架中的一个注解&#xff0c;将方法返回值转换为HTTP响应体内容 当 ResponseBody 注解应用在一个控制器方法上时&#xff0c;SpringMVC会将该方法的返回对象&#xff08;如Java对象、字符串或基本类型&#xff09;通过MessageConverter转换为指定的媒…

跳转漏洞靶场记录(重定向漏洞)

目录 简单介绍 绕过方式及更多介绍 靶场搭建 vulhub 漏洞原因 DVWA

宋仕强论道之华强北电子交易中心(四十三)

最近中国电子CECC牵头的电子交易中心在前海挂牌&#xff0c;这给华强北带来了一些威胁&#xff0c;也蚕食了部分华强北市场。事实上&#xff0c;电子元器件市场是一个非常巨大且复杂的市场&#xff0c;包括了各种各样的产品和配套的服务。比如说存储产品这一块&#xff0c;标准…

在Overleaf中解决IEEE LaTeX模板不能显示中文问题

解决IEEE的Latex模板不能显示中文的问题 写在最前面编译器选择XeLatex导入CTeX包IEEE单栏转换为双栏如何在Overleaf中解决IEEE LaTeX模板显示中文问题&#xff1a;一些其他的补充引言问题描述准备工作为什么中文字符在IEEE LaTeX模板中显示有问题——了解LaTeX编码的基础概念 关…

写点东西《最佳 Web 框架不存在 》

写点东西《&#x1f947;最佳 Web 框架不存在 &#x1f6ab;》 TLDR&#xff1b;您选择的 Web 应用程序框架并不重要。嗯&#xff0c;它很重要&#xff0c;但并不像其他人希望您相信的那样重要。 2024 年存在如此多的库和框架&#xff0c;而且最好的库和框架仍然备受争议&…