springboot添加swagger和knife简化接口测试

news2024/9/28 15:19:09

1、添加依赖

 <!--        接口测试包-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <!--排除swagger2的annotations和models依赖,然后再引入1.5.21版本的annotations和models依赖-->
            <exclusions>
                <exclusion>
                    <groupId>io.swagger</groupId>
                    <artifactId>swagger-annotations</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>io.swagger</groupId>
                    <artifactId>swagger-models</artifactId>
                </exclusion>
            </exclusions>
            <version>2.9.2</version>
        </dependency>
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
            <version>2.0.1</version>
        </dependency>

2、添加配置文件

package com.example.redis.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * @ClassName Swagger2Config
 * @Description TODO
 * @Author xulina
 * @Date 2022/10/13 15:27
 **/
@EnableSwagger2
@Configuration
public class Swagger2Config {
    @Value("${swaggrBasePackage:com.example.redis}")
    private String swaggrBasePackage ;
    @Bean
    public Docket createApi(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage(swaggrBasePackage))
                .paths(PathSelectors.any())
                .build();
    }

    @Bean
    public ApiInfo apiInfo(){
        return new ApiInfoBuilder()
                .title("redis")
                .description("redis")
                .termsOfServiceUrl("http://localhost:8999/")
                .version("1.0")
                .build();
    }
}

3、启动类上添加注解

@EnableKnife4j
@EnableSwagger2

4、接口上添加注解

package com.example.redis.test.mq;

import com.github.xiaoymin.knife4j.annotations.ApiSort;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @ClassName SendRedisMessage
 * @Description TODO
 * @Author xulina
 * @Date 2023/8/9 15:19
 **/
@Api(tags = {"redis消息中间件"})
@ApiSort(value = 10)
@RestController
@Slf4j
public class SendRedisMessageController {
    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    @GetMapping("sendMessageTest")
    @ApiOperation("发送消息")
    public String SendRediaMessage(){
        log.info("Sending message...");
        stringRedisTemplate.convertAndSend("topic","a message");
        return "Send Success";
    }
}

注解说明如下表

 

5、运行服务,打开浏览器,在浏览器输入 http://127.0.0.1:8080/doc.html,如下图所示

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

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

相关文章

Pr2022安装插件beat edit安装之后无法加载音乐怎么办?

你运行设置不对&#xff0c;安装好后试试管理员权限运行。 安装好插件后点击上方的窗口&#xff0c;然后再在里面找到扩展&#xff0c;继续点开里面有个BeatEdit&#xff0c;就是插件本身&#xff0c;点开。先选择一个加载音乐的选项&#xff0c;载入音乐先。这个时候可以按下…

一篇文章教会你什么是Linux进程控制

Linux进程控制 进程创建1.fork函数初识1.1那么fork创建子进程时&#xff0c;操作系统都做了什么呢&#xff1f;1.2 父子进程和CPU中的EIP&#xff08;指令指针&#xff09;之间存在一定的关系1.3 fork的常规用法有哪些&#xff1f;1.4 fork调用失败的原因有哪些&#xff1f; 2.…

TLS洪水攻击是什么,当网络加密成为一种负担怎么办?

今天&#xff0c;我们将深入研究一种典型的DDOS攻击类型——TLS洪水攻击&#xff0c;TLS&#xff08;传输层安全&#xff09;洪水攻击可以淹没大多数DDoS防护解决方案。因此如果您使用了错误的解决方案&#xff0c;意味着您的Web应用程序面临很大的风险&#xff01; 今天将由火…

云端同步、高效无界:5款免费的跨平台思维导图软件推荐!

思维导图是一种以图形化方式表示思想、概念或任务的方法&#xff0c;可以帮助用户梳理思维、提高记忆和理解。在工作中&#xff0c;思维导图可以用于会议记录、任务规划、项目管理等&#xff0c;帮助提高工作效率和团队协作能力&#xff1b;在学习中&#xff0c;思维导图可以用…

HA3 SQL样本实验:一种混合计算查询的全新样本解决方案

作者&#xff1a;陆唯一(芜霜) HA3&#xff08;对外开源代号&#xff1a;Havenask &#xff09;是阿里智能引擎团队自研的大规模分布式检索系统&#xff0c;广泛应用于阿里内部的搜索业务&#xff0c;是十多年来阿里在电商领域积累下来的核心竞争力产品。Ha3 SQL 是在原有Ha3引…

IDEA简单拷贝一份新项目记录

IDEA简单拷贝项目记录 拷贝后改项目名&#xff0c;然后iml 配置文件改项目名&#xff0c;然后 .idea 中的compiler.xml 里面的name标签改项目名。 就可以了

Sentieon|应用教程:利用Sentieon Python API引擎为自研算法加速

背景 Sentieon套装中所有模块的速度都远超对应开源软件的数倍至数十倍&#xff0c;用户在使用这些模块的同时&#xff0c;有时也希望Sentieon团队可以帮助加速自己开发的定制化软件。为了帮助这些用户能在自研软件上享受到Sentieon模块的速度&#xff0c;我们开发了Python API…

续签四年的榜一大哥,打动他的竟是

今天要聊的是一位来自有福之州的医疗客户&#xff0c;从产品落地至今一直使用&#xff0c;连续四年不断续约&#xff0c;名副其实的榜一大哥。最初打动用户的&#xff0c;来自技术团队的服务能力&#xff0c;以及客户对新生产品期待和支持&#xff0c;而五年来不离不弃&#xf…

vue 点击顶部tab重新请求列表

我们点击 1 2 来回切换时,发现客户经理的列表不会重新请求(菜单中含有客户经理) 这时我们添加以下代码就可以了 watch: {$route(route) {this.getList()}},/** 查询客户经理列表 */getList() {this.loading true;listManager(this.queryParams).then(response > {this.mana…

低代码如何实现高效率开发?

在高度变化的市场环境下&#xff0c;企业亟需形成以数据为驱动的新型生产运营方式&#xff0c;提升价值、创新模式、降低成本&#xff0c;以建立新一轮的核心竞争优势。在此背景下&#xff0c;数字化转型成为了最具确定性的时代浪潮&#xff0c;企业纷纷拥抱低代码开发平台&…

NSS [UUCTF 2022 新生赛]ez_upload

NSS [UUCTF 2022 新生赛]ez_upload 考点&#xff1a;Apache解析漏洞 开题就是标准的上传框 起手式就是传入一个php文件&#xff0c;非常正常的有过滤。 .txt、.user.ini、.txxx都被过滤了&#xff0c;应该是白名单或者黑名单加MIME过滤&#xff0c;只允许.jpg、.png。 猜测二…

UVSLED透明屏,在商业广告中,有哪些应用表现?

UVSLED透明屏是一种新型的显示屏技术&#xff0c;它采用了UVSLED&#xff08;Ultraviolet Shortwave Light Emitting Diode&#xff09;作为光源&#xff0c;具有高亮度、高对比度和高色彩饱和度的特点。 UVSLED透明屏可以实现透明显示效果&#xff0c;使得观众可以同时看到屏…

uniapp实现自定义导航内容高度居中(兼容APP端以及小程序端与胶囊对齐)

①效果图如下 1.小程序端与胶囊对齐 2.APP端内容区域居中 注意&#xff1a;上面使用的是colorui里面的自定义导航样式。 ②思路&#xff1a; 1.APP端和小程序端走不同的方法&#xff0c;因为小程序端要计算不同屏幕下右侧胶囊的高度。 2.其次最重要的要清晰App端和小程序端…

如何利用合同管理系统降低企业的风险和损失

合同管理系统是企业内部的重要工具&#xff0c;它可以帮助企业有效降低风险和损失。通过规范和集中管理企业与其他主体之间的合同&#xff0c;合同管理系统可以提供一系列的功能和工具&#xff0c;帮助企业更好地管理合同并减少潜在的法律纠纷。 1. 合同信息集中管理 合同管理…

C++ 线性群体的概念

线性群体中的元素次序与其位置关系是对应的。 在线性群体中&#xff0c;可以按照访问元素的不同方法分为直接访问、顺序访问和索引访问。 &#xff08;1&#xff09;直接访问 对可直接访问的线性群体&#xff0c;我们可以直接访问群体中的任何一个元素&#xff0c;而不必首先访…

深入探索Python元组常用函数及实例应用

Python作为一种功能强大且易于学习的编程语言&#xff0c;提供了多种数据结构来处理不同类型的数据。其中&#xff0c;元组&#xff08;Tuple&#xff09;是一种不可变的序列类型&#xff0c;具有多种常用函数&#xff0c;本篇博客将深入介绍元组的常用函数&#xff0c;并通过实…

Leetcode-每日一题【剑指 Offer 14- II. 剪绳子 II】

题目 2、3、3的三段&#xff0c;此时得到的最大乘积是18。 答案需要取模 1e97&#xff08;1000000007&#xff09;&#xff0c;如计算初始结果为&#xff1a;1000000008&#xff0c;请返回 1。 示例 1&#xff1a; 输入: 2输出: 1解释: 2 1 1, 1 1 1 示例 2: 输入: 10输出…

19. python从入门到精通——Web编程

HTTP协议 HTTP协议的常用方法 方法 描述 GET 请求指定的页面信息&#xff0c;并返回实体主体。 POST 向指定资源提交数据进行处理请求&#xff08;例如提交表单或者上传文件&#xff09;。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 …

vue3中用watch监听响应式数据的注意点

如果你在vue3中使用reactive()方法创建响应式数据&#xff0c;然后又用torefs()方法将响应式数据解构成单一的ref响应式数据。 此时&#xff0c;如果你想用watch监听解构出来单一的响应式数据&#xff0c;watch不起作用。 此时&#xff0c;你需要用watch监听之前的reactive()…

Mybatis-Plus使用updateById()、update()将字段更新为null

文章目录 一、问题背景二、问题原因三、解决方案1. 设置全局的field-strategy2. 对某个字段设置单独的field-strategy3. 使用UpdateWrapper方式更新&#xff08;推荐使用&#xff09; 本文主要介绍了Mybatis-Plus使用updateById()、update()将字段更新为null&#xff0c;文中通…