Knife4j框架

news2024/12/28 18:39:41

简介:Knife4j是一款在线API文档框架,可以基于当前项目的控制器类中的配置生成文档,并自带调试功能。通俗来说就是将controller里面请求的接口文档化,便于前端人员熟知请求方式和参数。并且能自动化根据controller的更新而跟新。

用法——

1.添加依赖:

<!-- Knife4j Spring Boot:在线API -->
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-spring-boot-starter</artifactId>
    <version>2.0.9</version>//该版本适合springBoot2.6以下,springBoot2.6以上需要将版本提升。
</dependency>

2.在主配置文件(`application.properties` / `application.yml`)中开启增强模式(以yml为例)

# Knife4j配置
knife4j:
  # 开启增强模式
  enable: true
#  production: true 禁用该功能,无法访问页面。

3.-添加配置类(是相对固定的代码,复制粘贴即可)

@Slf4j
@Configuration
@EnableSwagger2WebMvc
public class Knife4jConfiguration {

    /**
     * 【重要】指定Controller包路径
     */
    private String basePackage = "cn.shop.controller"; //修改为自己的controller包路径
    /**
     * 分组名称
     */
    private String groupName = "product";
    /**
     * 主机名
     */
    private String host = "";
    /**
     * 标题
     */
    private String title = "";
    /**
     * 简介
     */
    private String description = "在线API文档";
    /**
     * 服务条款URL
     */
    private String termsOfServiceUrl = "";
    /**
     * 联系人
     */
    private String contactName = "";
    /**
     * 联系网址
     */
    private String contactUrl = "n";
    /**
     * 联系邮箱
     */
    private String contactEmail = "";
    /**
     * 版本号
     */
    private String version = "1.0.0";

    @Autowired
    private OpenApiExtensionResolver openApiExtensionResolver;

    public Knife4jConfiguration() {
        log.debug("创建配置类对象:Knife4jConfiguration");
    }

    @Bean
    public Docket docket() {
        String groupName = "1.0.0";
        Docket docket = new Docket(DocumentationType.SWAGGER_2)
                .host(host)
                .apiInfo(apiInfo())
                .groupName(groupName)
                .select()
                .apis(RequestHandlerSelectors.basePackage(basePackage))
                .paths(PathSelectors.any())
                .build()
                .extensions(openApiExtensionResolver.buildExtensions(groupName));
        return docket;
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title(title)
                .description(description)
                .termsOfServiceUrl(termsOfServiceUrl)
                .contact(new Contact(contactName, contactUrl, contactEmail))
                .version(version)
                .build();
    }
}

使用——

1.启动springboot项目

2.网址输入xxx/doc.html(xxx为springBoot的访问路径。如:localhost:9080)

补充——

注解解析:

- @Api:添加在控制器类上通过此注解的tags属性可配置管理模块的名称,在配置管理模块名称时,可以在各名称前面添加数字或字母进行序号的排列,使得各管理模块的显示顺序是自定义的顺序
  - 例如:@Api(tags = "1. 相册管理模块")


- @ApiOperation:添加在控制器类中处理请求的方法上,通过此注解的`value`属性,可配置业务的名称
  - 例如:@ApiOperation("添加相册")


- @ApiOperationSupport:添加在控制器类中处理请求的方法上通过此注解的order属性(int类型),可配置业务的排序序号,各业务将按照此序号升序排列
  - 例如:@ApiOperationSupport(order = 400)
  - 提示:不建议将序号排列的过于紧凑,否则,不利于在已有的顺序中插入新的内容

- @ApiModelProperty:添加在POJO类型的属性上通过此注解的value属性,可配置属性的名称,通过此注解的required属性,可配置是否必须提交此参数(但不具备检查功能),通过此注解的example属性,可配置示例值(需要注意数据类型的问题,例如数值型的属性不要配置字母或符号作为示例值),通过此注解的dataType属性,可配置数据类型,例如配置为dataType = "long",但此属性通常不需要配置此属性

    例如:public class AlbumAddNewDTO implements Serializable {
        @ApiModelProperty(value = "相册名称", required = true, example = "小米手机的相册")
        private String name;
    }

- @ApiImplicitParam:添加在控制器类中处理请求的方法上用于对未封装的请求参数进行配置,必须通过此注解的`name`属性,指定配置哪个参数,其它属性的配置可参考@ApiModelProperty中的属性,需要注意的是,一旦通过此注解进行配置,在API文档上显示的数据类型默认是string,对于非字符串类型的属性,应该显式的配置dataType属性
- 例如:@ApiImplicitParam(name = "id", value = "相册ID", required = true, example = "9527", dataType = "long")

- @ApiImplicitParams:添加在控制器类中处理请求的方法上当方法的参数超过1个,且都需要配置API文档说明时,必须将多个@ApiImplicitParam注解配置作为此注解(@ApiImplicitParams)的参数(此注解参数是`@ApiImplicitParam`数组类型)
例如:@ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "相册ID", required = true, example = "9527", dataType = "long"),
            @ApiImplicitParam(name = "userId", value = "用户ID", required = true, example = "9527", dataType = "long")
    })

    public String delete(Long id, Long userId) {
        return null;
    }

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

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

相关文章

“历久弥新 | 用AI修复亚运珍贵史料”活动震撼来袭!

时隔近半个世纪&#xff0c;新中国第一次参与亚运会的影像资料将首次对外披露。只是年代久远&#xff0c;老照片老视频都有了岁月痕迹&#xff0c;画面不再清晰&#xff0c;这些珍贵史料急需你的帮助&#xff01; 一、活动介绍 2023年&#xff0c;正值亚运110周年&#xff0c…

VBA技术资料MF52:VBA_在Excel中突出显示前 10 个值

【分享成果&#xff0c;随喜正能量】一言之善&#xff0c;重于千金。善良不分大小&#xff0c;有时候你以为的一句话&#xff0c;小小的举手之劳&#xff0c;也可能就是别人的救赎&#xff01;不要吝啬你的善良&#xff0c;因为你永远不知道那小小的善良能给多少人带来光明。。…

RTSP协议学习

文章目录 RTSP协议学习单播&#xff0c;组播&#xff0c;广播单播&#xff08;Unicast&#xff09;和组播&#xff08;Multicast&#xff09;广播&#xff08;Broadcast&#xff09;学习思维导图一览 RTSP协议学习 ##工作原理 RTSP&#xff08;Real-Time Streaming Protocol&…

正中优配:证券是什么意思?

这是一个经常被提及但相同也经常被人们疏忽的问题。事实上&#xff0c;证券是金融商场中一个重要的概念&#xff0c;对于出资者和经济展开都有着至关重要的效果。本文将从多个视点出发&#xff0c;探讨证券的意义和重要性。 一、定义和方法 证券是指可以转让的金融资产&#x…

Elasticsearch,Logstash和Kibana安装部署(ELK Stack)

前言 当今数字化时代&#xff0c;信息的快速增长使得各类组织和企业面临着海量数据的处理和分析挑战。在这样的背景下&#xff0c;ELK Stack&#xff08;Elasticsearch、Logstash 和 Kibana&#xff09;作为一套强大的开源工具组合&#xff0c;成为了解决数据管理、搜索和可视…

开发神器VSCode配置C/C++环境

hi&#xff0c;小伙伴们大家好&#xff0c;今天给大家介绍一款程序员常用的开发神器VSCode&#xff0c;想必大家肯定有所了解&#xff0c;也有很多小伙伴在日常工作中经常使用。当木荣君初次见到VSCode时&#xff0c;真正的被它惊艳到了&#xff0c;可以说是一见钟情。从此就爱…

iftop工具详解——网络流量监控利器(详解+示例+实战)

1 iftop命令 iftop是一款用于监控网络流量的命令行工具。它可以实时显示正在通过网络接口传输的数据流量信息,包括源和目标IP地址、端口号、数据传输速率等。 iftop 是 Linux 系统一个免费的网卡实时流量监控工具,类似于 top 命令。iftop 可以监控指定网卡的实时流量、端口连…

AIGC+思维导图:提升你的学习与工作效率的「神器」

目录 一、产品简介 二、功能介绍 2.1 AI一句话生成思维导图 2.2百万模版免费用 2.3分屏视图&#xff0c;一屏读写 2.4团队空间&#xff0c;多人协作 2.5 云端跨平台化 2.6 免费够用&#xff0c;会员功能更强大 2.7 支持多种格式的导入导出 三、使用教程 3.1 使用AI…

NLP(1)--NLP基础与自注意力机制

目录 一、词向量 1、概述 2、向量表示 二、词向量离散表示 1、one-hot 2、Bag of words 3、TF-IDF表示 4、Bi-gram和N-gram 三、词向量分布式表示 1、Skip-Gram表示 2、CBOW表示 四、RNN 五、Seq2Seq 六、自注意力机制 1、注意力机制和自注意力机制 2、单个输出…

jQuery成功之路——jQuery事件和插件概述

一、jQuery的事件 1.1常用事件 jQuery绑定事件&#xff0c;事件名字没有on。 事件名称事件说明blur事件源失去焦点click单击事件源change内容改变keydown接受键盘上的所有键(键盘按下)keypress接受键盘上的部分键&#xff08;ctrl,alt,shift等无效&#xff09;(键盘按下)key…

【数据结构练习】栈的面试题集锦

目录 前言&#xff1a; 1.进栈过程中可以出栈的选择题 2.将递归转化为循环 3.逆波兰表达式求值 4.有效的括号 5. 栈的压入、弹出序列 6. 最小栈 前言&#xff1a; 数据结构想要学的好&#xff0c;刷题少不了&#xff0c;我们不仅要多刷题&#xff0c;还要刷好题&#x…

动态规划:路径和子数组问题(C++)

动态规划&#xff1a;路径和子数组问题 路径问题1.不同路径&#xff08;中等&#xff09;2.不同路径II&#xff08;中等&#xff09;3.下降路径最⼩和&#xff08;中等&#xff09;4.地下城游戏&#xff08;困难&#xff09; 子数组问题1.最大子数组和&#xff08;中等&#xf…

【Java】关于JDK 8的HashMap

文章目录 HashMap 简介数据结构Hash构造方法get(key)方法步骤一&#xff1a;通过key获取所在桶的第一个元素是否存在步骤二:该节点的hash和key是否与要查询的hash和key匹配步骤三:当对应桶中不止一个节点时&#xff0c;根据不同节点类型查询 put(key,value)为什么树化&#xff…

4.正则提取html中的img标签的src内容

我们以百度贴吧的1吧举例 目录 1 把网页搞下来 2 收集url 3 处理url 4 空的src 5 容错 6 不使用数字作为文件名 7 并不是所有的图片都用img标签表示 8 img标签中src请求下来不一定正确 9 分页 1 把网页搞下来 搞下来之后&#xff0c;双击打开是这样的 2 收…

leetcode 143. 重排链表

2023.9.5 先将链表中的节点存储到数组中&#xff0c;再利用双指针重新构造符合条件的链表。代码如下&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNod…

java八股文面试[数据库]——Page页的结构

mysql中数据是存储在物理磁盘上的&#xff0c;而真正的数据处理又是在内存中执行的。由于磁盘的读写速度非常慢&#xff0c;如果每次操作都对磁盘进行频繁读写的话&#xff0c;那么性能一定非常差。为了上述问题&#xff0c;InnoDB将数据划分为若干页&#xff0c;以页作为磁盘与…

了解下iVX,它可能会刷新你对传统软件开发的认知!

知识目录 前言一、聊聊传统编程语言二、iVX的诞生三、iVX VS 传统编程语言3.1 图形化 vs 文本化3.2 逻辑与语法的解耦3.3 组件与库3.4 编译与代码生成3.5 IDE与语言设计的整合3.6 面向群体3.7 灵活性与便利性 四、iVX提供多样模板&#xff0c;快来 ~五、iVX VS 其他低代码平台结…

面试中的自我介绍:首印象决定一切

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

MES系统来料检验:优化制造业质量控制

一、MES系统来料检验的定义&#xff1a; MES系统来料检验是指制造执行系统中的质量管理模块&#xff0c;用于对供应商提供的原材料和零部件进行质量检查和验证。该模块涵盖了来料质量数据的采集、分析、报告和追溯等功能&#xff0c;以确保来料符合质量要求&#xff0c;并提供…

【web知识清单】你想要的都有:网络、HTTP、会话保持、认证授权......持续更新中

作者简介&#xff1a; 目录 1.网络 2.HTTP 2.1.报文结构 2.1.1.请求报文 2.1.2.响应报文 2.2.方法 2.3.HTTPS 2.4.跨域 3.会话保持 3.1.概述 3.2.cookie 3.3.session 4.认证授权 4.1.Token 4.2.JWT 4.3.oauth 1.网络 计算机网络&#xff1a; 计算机网络&…