【SpringBoot】Swagger和knife4j的使用

news/2024/7/8 4:00:51 标签: java, spring boot, 后端

文章目录

  • 前言
  • 1.什么是Swagger和Knife4j
  • 2.Swagger和Knife4j怎么用
    • 2.1 引入依赖
    • 2.2 设置配置类
    • 2.3 启动验证
  • 3.完结撒花

前言

springboot笔记集合: springboot笔记合计
没用的废话理论不多说,会用就完了

1.什么是Swagger和Knife4j

  1. Swagger是一种开源的API描述语言,就是描述API的,
  2. 同时Swagger还提供了一组工具(也叫Swagger),可以帮助开发人员自动生成API文档、测试API并与其他系统集成。
  3. Knife4j是基于Swagge语言延伸的另一组api工具,简单来说,就是Swagger工具能干的它也能干,不能干的也能干,Knife4j就是Swagger的增强

2.Swagger和Knife4j怎么用

2.1 引入依赖

因为Knife4j是基于Swagger的,所以两个的依赖都要引进来,下面是我的案例:

  • 不同的Swagger和Knife4j版本可能有版本问题,以下这个搭配起码我用的时候没有问题
  • 我的springboot2.7.6
<dependency>
            <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>
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
            <!--在引用时请在maven中央仓库搜索2.X最新版本号-->
            <version>2.0.9</version>
        </dependency>

2.2 设置配置类

java">/**
 * 自定义Swagger配置类
 * @imb.zz
 */
@Configuration // 配置类
//@EnableSwagger2 // 开启 swagger2 的自动配置
@EnableSwagger2
@EnableKnife4j
@Profile({"dev","test"})
public class SwaggerConfig {
    /**
     * 创建swagger对象:
     *
     * @return
     */
    @Bean
    public Docket mapRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("地图坐标转化APIs") //随便写
                .apiInfo(apiInfo()) //不用变
                .select() //不用变
                .apis(RequestHandlerSelectors.basePackage("com.example.yupao.controller"))//写你的controller的api包路径
                .paths(PathSelectors.any())//不用变
                .build();
    }


    /**
     * 设置api信息
     * title:swagger题目
     * description:描述
     * cotact:创建者 name url email
     *
     * @return
     */
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("这里写项目名")
                .description("这里写项目描述")
                .termsOfServiceUrl("这里写github链接,如果有的话")
                .contact(new Contact("imbzz",null ,"xxxxx@qq.com"))//个人信息
                .version("1.0")//版本提示
                .build();
    }
}

2.3 启动验证

  1. 出现第一个红色框成功
    在这里插入图片描述
  2. 直接在浏览器打开 : localhost:8080/api/doc.html出现下面的页面就成了,可以直接测试接口
  • 端口由你自己指定,比如这个的8080
  • /api的路径是我自定义的,如果你别加 ,直接localhost:8080/doc.html
    在这里插入图片描述在这里插入图片描述
    如果有人说Swagger长什么样,下面这个丑样: 听说没那么好用,咱也是直接上Knife4jKnife4j
    在这里插入图片描述

3.完结撒花

在这里插入图片描述


http://www.niftyadmin.cn/n/4993839.html

相关文章

MyBatis中CDATA的作用

一、<![CDATA[]]>简介 在XML文档的解析过程中&#xff0c;首先查找元素的起始符&#xff0c;即字符"<“和字符”&“。字符”<“表示为新元素的开始&#xff0c;字符”&"表示为字符实体的开始。CDATA的作用是保护这些特殊字符&#xff08;例如&a…

ClickHouse进阶(五):副本与分片-1-副本与分片

进入正文前&#xff0c;感谢宝子们订阅专题、点赞、评论、收藏&#xff01;关注IT贫道&#xff0c;获取高质量博客内容&#xff01; &#x1f3e1;个人主页&#xff1a;含各种IT体系技术,IT贫道_Apache Doris,大数据OLAP体系技术栈,Kerberos安全认证-CSDN博客 &#x1f4cc;订阅…

go语言--锁

锁的基础&#xff0c;go的锁是构建在原子操作和信号锁之上的 原子锁 原子包实现协程的对同一个数据的操作&#xff0c;可以实现原子操作&#xff0c;只能用于简单变量的简单操作&#xff0c;可以把多个操作变成一个操作 sema锁 也叫信号量锁/信号锁 核心是一个uint32值&#…

解决npm install报错: No module named gyp

今天运行一个以前vue项目&#xff0c;启动时报错如下&#xff1a; ERROR Failed to compile with 1 error上午10:19:33 error in ./src/App.vue?vue&typestyle&index0&langscss& Syntax Error: Error: Missing binding D:\javacode\Springboot-MiMall-RSA\V…

docker常用中间件安装

文章目录 1、前言2、中间件安装2.1、mysql2.2、gitlab容器2.3、nacos2.4、redis2.5、xxljob2.6、zipkin2.7、sentinel2.8、seata2.8.1、获取镜像2.8.2、运行容器并获取配置 2.9、rockerMQ2.9.1、rockerMQ-namesrv2.9.2、rockerMQ-broker2.9.3、rockerMQ-console 2.10、jenkins2…

@Build注解有什么用?怎么用?

在Java中&#xff0c;Builder注解通常与项目构建工具Lombok一起使用&#xff0c;用于自动生成一个建造者&#xff08;Builder&#xff09;模式相关的代码&#xff0c;以简化对象的创建和初始化过程。 使用Builder注解的类会自动生成一个内部静态的建造者类&#xff0c;该建造者…

解决:burpsuite——Connection refused: no further information

出现该问题的原因是开启了SOCKS proxy&#xff1b;关闭该选项即可正常抓包。 具体操作&#xff1a;

Vue框架--Vue中的数据代理

下面,我们一起来说以下Vue中的数据代理。 1.Object.defineProperty()方法回顾 * Object.defineProperty()方法基本配置项 * value:指定设置对象内容的属性值 * enumerable:true, //控制属性是否可以枚举(也就是是否可以被遍历),默认值是false * writable:true, //控制属性是…