Swagger3学习笔记

news2024/11/11 18:15:30

参考https://blog.csdn.net/YXXXYX/article/details/124952856
https://blog.csdn.net/m0_53157173/article/details/119454044

引入依赖

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>3.0.0</version>
        </dependency>

启动类加注解@EnableWebMvc

不加会报错

@SpringBootApplication
@EnableWebMvc
public class SwaggerApplication {

    public static void main(String[] args) {
        SpringApplication.run(SwaggerApplication.class, args);
    }

}

控制器

@RestController
@RequestMapping("/user")
public class UserController {
    @GetMapping("get")
    public String getUser() {
        return "user";
    }
}

配置类

@Configuration
@EnableOpenApi
public class SwaggerConfig {}

启动

访问http://localhost:8080/swagger-ui/index.html
在这里插入图片描述

配置Swagger 的文档生成规则

Docket 是一个配置类,用于配置 Swagger 的文档生成规则。通过创建一个 Docket 实例,您可以指定要生成的文档的详细信息,例如 API 的基本信息、路径规则、请求参数、响应信息等。

@Configuration
@EnableOpenApi
public class SwaggerConfig {

    @Bean
    public Docket docket(Environment environment) {
        Profiles profiles = Profiles.of("dev", "test"); // 设置要显示swagger的环境
        boolean isOpen = environment.acceptsProfiles(profiles); // 判断当前是否处于该环境

        return new Docket(DocumentationType.OAS_30)
                // 文档信息配置
                .apiInfo(apiInfo())
                // 设置是否启动Swagger,通过当前环境进行判断:isOpen
                .enable(isOpen)
                // 配置扫描的接口
//                .select()
                // 配置扫描哪里的接口
//                .apis(RequestHandlerSelectors.basePackage("com.swagger.controller"))
//                // 过滤请求,只扫描请求以/category开头的接口
//                .paths(PathSelectors.ant("/user/**"))
//                .build()
                ;
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("外卖项目接口文档") // 文档标题
                .description("基本的一些接口说明") // 文档基本描述
                .contact(new Contact("xxxx", "https://blog.csdn.net", "xxxx@qq.com")) // 联系人信息
                .termsOfServiceUrl("http://terms.service.url/组织链接") // 组织链接
                .version("1.0") // 版本
                .license("Apache 2.0 许可") // 许可
                .licenseUrl("https://www.apache.org/licenses/LICENSE-2.0") // 许可链接
                .extensions(new ArrayList<>()) // 拓展
                .build();
    }

}
spring:
  profiles:
    active: dev

在开发中有开发环境、测试环境、发布环境,Swagger文档不应该在有些环境中出现,就比如发布环境,不仅占内存,而且接口信息还容易泄露出去;

使用public Docket enable(boolean externallyConfiguredFlag)方法,看看是否启用swagger

整合knife4j

去除下面原先swagger依赖

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>3.0.0</version>
        </dependency>

加入

        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
            <version>3.0.3</version>
        </dependency>

去除@EnableOpenApi,换成@EnableKnife4j,配置本地资源映射路径,佛足额访问不了Knife4j首页

@EnableKnife4j//启用knife4j
@Configuration
//@EnableOpenApi
public class SwaggerConfig implements WebMvcConfigurer {

    /**
     * 不配置这个访问不了knife4j首页
     * @param registry
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
}

访问http://localhost:8080/doc.html
在这里插入图片描述

上传文件

使用@RequestPart(“file”)注解,不然不会展示上传文件按钮

    @PostMapping(value = "/upload")
    @ApiOperation("上传")
    public String upload(@RequestPart("file") MultipartFile file) {
        return "上传成功";
    }

解决返回乱码问题

/**
 * 中文乱码解决
 */
@Configuration
public class CharsetConfig implements WebMvcConfigurer {

    @Bean
    public HttpMessageConverter<String> responseBodyConverter() {
        return new StringHttpMessageConverter(StandardCharsets.UTF_8);
    }

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(responseBodyConverter());
    }

}

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

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

相关文章

云之道知识付费V2小程序V3.1.1独立平台版安装使用教程

据播播资源了解&#xff0c;云之道知识付费小程序是一款专注于知识付费的小程序源码&#xff0c;为内容创业者、自媒体和教育培训机构提供全方位的互联网解决方案。 由播播资源小编全套安装云之道知识付费V2独立版系统&#xff0c;系统支持无限多开&#xff0c;相比上几版出现…

如何创建电子商务平台

创建一个电商平台已经变得简单而又高效&#xff0c;其中乔拓云作为一家专业的第三方平台&#xff0c;提供了丰富的模板和工具&#xff0c;帮助商家快速搭建自己的电商平台。本文将介绍如何通过乔拓云平台创建电商平台&#xff0c;并提供一些建议和注意事项。 首先&#xff0c;商…

wincc项目中VBS脚本密码的研究

文章目录 前言一、分析二、验证及使用 前言 很多时候我们在wincc中写全局脚本时会为自己的脚本添加密码&#xff0c;但很久很久以后再想修改密码忘记了怎么办呢。 一、分析 经过分析v7.0,v7.3,v7.5密码稍有不同&#xff0c;但同样最多可以设置21位的密码。 二、验证及使用

支持向量机(SVM)

目录 1 引言 2 支持向量机的理论基础 1. 什么是支持向量&#xff0c;它们在模型中的作用是什么&#xff1f; 2. 线性支持向量机的数学原理 3. 解释如何通过核技巧来处理非线性问题 4. 支持向量机的优点和局限 3 支持向量机的实践 1. 如何使用Python的sklearn库创建和训练…

【计算机组成与体系结构Ⅰ】实验4 存储器原理实验

一、实验目的 1&#xff1a;了解双端口静态存储器IDT7132的工作特性及使用方法。 2&#xff1a;了解半导体存储器如何读写。 二、实验总结 0&#xff1a;实验内容 双端口存储器RAM&#xff1a; 左端口的数据部分与数据总线DBUS7-DBUS0相联&#xff1b;右端口的数据引脚与指…

【云原生】在DACS沙箱内配置Telepresence工具(社区版限制5人连接)

使用 Telepresence 映射 Kubernetes 服务到 DACS 沙箱内 Telepresence 属于沙箱工具,它可以把我们在AWS云平台的EKS(Kubernetes)上部署的服务映射到本地,这样大家就可以在本地访问EKS(Kubernetes)上的资源了,如注册中心Nacos、Redis、Kafka等服务 安装 Telepresence 安装…

使用最小二乘进行多项式曲线拟合

目录 写在前面曲线拟合方法pcl实现的b样条曲线拟合最小二乘曲线拟合原理代码注&#xff1a;结果 参考完 写在前面 1、本文内容 使用Eigen进行最小二乘拟合曲线 2、平台/环境 Eigen(open3d), cmake, pcl 3、转载请注明出处&#xff1a; https://blog.csdn.net/qq_41102371/ar…

【Git】Github 上传文件到远程仓库时,经常发生网络错误,一个比较稳定的连接方法及我的示例

文章目录 一、问题导读二、完整的一个流程2.1 初始化2.2 从远程仓库拉取最新的更改并合并到当前分支2.3 远程仓库的 SSH URL2.4 添加到暂存区2.5 提交操作2.6 将一个远程仓库添加为 Git 仓库的远程别名2.7 推送到远程仓库2.8 最后的结果 三、HTTP和SSH的理解3.1 两者的区别3.1.…

【网络系统集成】网络认证实验

1.实验名称 网络认证实验 2.实验目的 学习网络认证配置 3.实验内容 3.1拓扑结构图 3.2地址分配 <

OpenCV实战(28)——光流估计

OpenCV实战&#xff08;28&#xff09;——光流估计 0. 前言1. 光流估计原理2. 光流算法实现3. 完整代码小结系列链接 0. 前言 当相机进行拍摄时&#xff0c;拍摄到的亮度图案会投射到图像传感器上&#xff0c;从而形成图像。在视频序列中&#xff0c;我们通常需要捕捉运动模式…

HCIP--OSPF实验1

1、合理规划IP地址&#xff0c;启用ospf单区域 2、R1-R2之间启用ppp的单向认证 3、R2-R3之间启用ppp的chap认证 4、R3-R5-F6之间使用MGRE&#xff0c;R3为hub端&#xff0c;R5,R6为spoke端&#xff1b; 要求MGRE接口网络型为BMA&#xff0c;spoke之间通信必须经过hub端 5、全…

Linux--进程

什么叫做进程&#xff1f; 程序加载到内存就叫进程&#xff08;看不懂是吧&#xff0c;看下面更详细一些&#xff09; 进程对应的代码和数据进程对应的PCB结构体

MySQL索引原理和优化

目录 1 什么是索引&#xff1f;1.1 引言1.2 索引原理1.3 索引分类1.3.1 主键索引1.3.2 普通索引&#xff08;单列索引&#xff09;1.3.3 复合索引&#xff08;组合索引&#xff09;1.3.4 唯一索引1.3.5 全文索引1.3.6 索引的查询和删除 1.4 索引的优缺点 2 索引数据结构2.1 Has…

做题遇见的PHP函数汇总

mb_substr函数 mb_substr() 函数返回字符串的一部分&#xff0c;之前学过 substr() 函数&#xff0c;它只针对英文字符&#xff0c;如果要分割的中文文字则需要使用 mb_substr() 语法&#xff1a; mb_substr ( $str ,$start [, $length NULL [, $encoding mb_encoding() ]] …

改进版简化路径。

美图 在原有的基础上增加对 cd - 的处理。 在 Unix 命令中&#xff0c;cd - 表示返回上一次所在的目录。我们可以使用一个变量来记录上一次所在的目录&#xff0c;在遇到 cd - 时将当前目录设置为上一次所在的目录。 以下是增加对 cd - 的处理后的代码&#xff1a; 4 cd /…

016 - STM32学习笔记 - SPI读写FLASH(一)

016 - STM32学习笔记 - SPI访问Flash&#xff08;一&#xff09; 之前csdn的名称是宥小稚&#xff0c;后来改成放学校门口见了&#xff0c;所以前面内容看到图片水印不要在意&#xff0c;都是自己学习过程中整理的&#xff0c;不涉及版权啥的。 1、什么是SPI&#xff1f; SP…

Linux项目自动化构建工具-make/Makefile以及git三板斧

目录 一、关于make/makefile的背景知识二、依赖关系和依赖方法三、make/makefile如何书写&#xff1f;四、文件的三个时间(Access、Modify、Change)五、Linux下倒计时和进度条代码的书写5.1 回车换行5.2 缓冲区5.3 倒计时代码实现5.4 进度条代码实现 六、git三板斧6.1 什么是gi…

10.15资源加载

定义&#xff1a; 1.直接属性引用 生成一个actor和声音&#xff1a; 运行时就会产生一个Myactor中设置的Actor并且播放Myactor中设置的声音。 音频&#xff1a;class USoundCue&#xff1b; 纹理&#xff1a;class UTexture&#xff1b; 材质&#xff1a; class UMaterial 模…

TCP/IP出现的背景及其历史【图解TCP/IP(笔记八)】

文章目录 TCP/IP出现的背景及其历史从军用技术的应用谈起ARPANET的诞生TCP/IP的诞生UNIX系统的普及与互联网的扩张商用互联网服务的启蒙 TCP/IP出现的背景及其历史 从军用技术的应用谈起 20世纪60年代&#xff0c;很多大学和研究机构都开始着力于新的通信技术。其中有一家以美…

jmeter列表数据断言

在jmeter接口请求中&#xff0c;通常需要根据接口data列表有无返回的数据断言是接口请求成功&#xff0c;如图1&#xff0c; 通常有这么几种方法&#xff1a; beanshell断言 json断言 响应断言 图1&#xff1a; 失败请求&#xff1a;{"code":0,"msg"…