Knife4j的介绍与使用

目录

  • 一、简单介绍
      • 1.1 简介
      • 1.2 主要特点和功能:
  • 二、使用步骤:
      • 2.1 添加依赖:
      • 2.2 yml数据源配置
      • 2.3 创建knife4j配置类
      • 2.4 注解的作用
    • 最后

一、简单介绍

1.1 简介

  • Knife4j 是一款基于Swagger的开源文档管理工具,主要用于生成和管理 API 文档。
    在这里插入图片描述

  • 它提供了一套美观、功能强大的界面,可以帮助开发者快速浏览、测试和理解后端 API 接口。

1.2 主要特点和功能:

Swagger 兼容性:

Knife4j 基于 Swagger,能够兼容 Swagger 的各种功能和注解,支持生成符合 OpenAPI 规范的文档。

可视化界面:

Knife4j 提供了直观的可视化界面,展示 API 接口的详细信息,包括请求、响应、参数说明等。

在线调试和测试:

在 Knife4j 的界面中,可以直接对 API 进行调试和测试,支持修改参数、发送请求并查看响应结果,方便开发者进行接口的验证和调试。

权限控制:

可以配置权限控制,限制特定用户或角色访问和操作 API 文档,保障接口的安全性。

自定义配置:

Knife4j 提供了丰富的配置选项,开发者可以根据项目需求进行自定义配置,如修改 UI 样式、调整文档的展示内容等。

集成简便:

集成 Knife4j 到项目中相对简单,一般通过 Maven 或 Gradle 添加依赖,并在 Spring Boot 项目中配置即可快速启用。

二、使用步骤:

2.1 添加依赖:

在项目的 Maven 或 Gradle 配置文件中添加 Knife4j 的依赖。

Maven 示例:

  <!--  接口文档 --><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.3</version></dependency>

2.2 yml数据源配置

spring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/database?serverTimezone=UTCusername: rootpassword: root# 数据库连接池type: com.alibaba.druid.pool.DruidDataSourcemvc:pathmatch: # Springfox使用的路径匹配是基于AntPathMatcher的# 所以需要配置此参数matching-strategy: ant_path_matcher

2.3 创建knife4j配置类

@Configuration // 开启配置
@EnableSwagger2 // 启动Swagger2
public class Knife4jConfiguration {@Beanpublic Docket defaultApi2() {String groupName = "1.0版本";Docket docket = new Docket(DocumentationType.OAS_30)// 是否启用Swagger,true启用,false不启用.enable(true).apiInfo(new ApiInfoBuilder().title("这是LiCoffee-Test-knife4j API ").description("这是项目描述").termsOfServiceUrl("服务器URL").contact(new Contact("LiCoffee", null, "qiushiju0828@163.com")).version("1.0").build())//分组名称.groupName(groupName).select()// 这里指定Controller扫描包路径,没有加注解的接口方法也会生成接口文档.apis(RequestHandlerSelectors.basePackage("com.controller"))// 这里指定只有加了注解的才会生成接口文档//.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)).paths(PathSelectors.any()).build();return docket;}
}

以上就配置完了,还有一些小细节下在讲,通过访问http://localhost:8080[/项目名]/doc.html

在这里插入图片描述

2.4 注解的作用

@Api(tags = "接口描述信息")

添加在controller层的类上

在这里插入图片描述


    @ApiOperation("根据用户ID查找")

添加在方法上

在这里插入图片描述


其他

  • @ApiModel:用对象来接收参数 ,修饰类

  • @ApiModelProperty:用对象接收参数时,描述对象的一个字段

    例如:

    @ApiModel(description = "用户实体类")
    public class User {@ApiModelProperty(name="id", value="用户id")private Integer id;@ApiModelProperty(value="用户姓名")private String name;
    
  • @ApiResponse:HTTP响应其中1个描述

  • @ApiResponses:HTTP响应整体描述,一般描述错误的响应

    // 针对响应状态 修饰方法
    @ApiResponses({@ApiResponse(code=500, message = "服务器异常")})
    
  • @ApiIgnore:使用该注解忽略这个API

    @ApiError :发生错误返回的信息

    @ApiParam:单个参数描述,用在控制器的方法上

    @ApiImplicitParam:一个请求参数,用在方法上

    @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Integer", paramType = "path")
    
    @ApiImplicitParams({@ApiImplicitParam(),@ApiImplicitParam()})
    
  • 针对返回值,使用泛型表示

    @ApiModel
    public class R {@ApiModelProperty(value = "返回数据状态",notes = "200成功 500失败")private int code;private String msg;@ApiModelProperty(value = "返回数据",notes = "可以是具体的对象,也可以是null")private Object data;
    

通过以上步骤,你可以快速集成 Knife4j 到你的 Spring Boot 项目中,并且利用其提供的强大功能来管理和展示 API 文档。


最后

如果感觉有收获的话,点个赞 👍🏻 吧。
❤️❤️❤️本人菜鸟修行期,如有错误,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍在这里插入图片描述

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

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

相关文章

Java客户端调用SOAP方式的WebService服务实现方式分析

简介 在多系统交互中&#xff0c;有时候需要以Java作为客户端来调用SOAP方式的WebService服务&#xff0c;本文通过分析不同的调用方式&#xff0c;以Demo的形式&#xff0c;帮助读者在生产实践中选择合适的调用方式。 本文JDK环境为JDK17。 结论 推荐使用Axis2或者Jaxws&#…

拆分pdf文件最简单的方法,pdf怎么拆成一页一张

在数字化的时代&#xff0c;pdf文件已经成为我们日常办公、学习不可或缺的文档格式。然而&#xff0c;有时候我们可能需要对一个大的pdf文件进行拆分&#xff0c;以方便管理和分享。那么&#xff0c;如何将一个pdf文件拆分成多个pdf呢&#xff1f;本文将为你推荐一种好用的拆分…

PLSQL Day4

--使用显式游标更新行&#xff0c;对所有salesman增加500奖金&#xff1a; declare cursor s_cursor is select * from emp where job SALESMAN for update; begin for e_s in s_cursor loop update emp set comm nvl(comm,0)500 where current of s_cur…

AFT:Attention Free Transformer论文笔记

原文链接 2105.14103 (arxiv.org) 原文翻译 Abstract 我们介绍了 Attention Free Transformer (AFT)&#xff0c;这是 Transformer [1] 的有效变体&#xff0c;它消除了点积自注意力的需要。在 AFT 层&#xff0c;键key和值value首先与一组学习的位置偏差position biases相结…

ubuntu22安装Docker并配置

安装Docker sudo apt install docker.io使用脚本自动安装docker&#xff1a; curl -fsSL get.docker.com -o get-docker.sh sudo sh get-docker.sh --mirror Aliyun配置国内镜像 /etc/docker/daemon.json 推荐配置&#xff1a; {"registry-mirrors": ["htt…

Lab1 论文 MapReduce

目录 &#x1f339;前言 &#x1f985;2 Programming Model &#x1f33c;2.1 Example &#x1f33c;2.2 Types &#x1f33c;2.3 More Examples &#x1f985;3 Implementation(实现) &#x1f33c;3.1 ~ 3.3 &#x1f33c;3.4 ~ 3.6 &#x1f985;4 Refinemen…

代理IP有什么用途

代理IP主要有以下应用场景&#xff1a; 1、隐藏真实IP地址&#xff1a;通过使用代理IP&#xff0c;可以隐藏真实的网络请求来源&#xff0c;保护用户隐私。 2、绕过网络限制&#xff1a;一些地区或网络环境可能存在访问限制&#xff0c;通过使用代理IP可以绕过这些限制&#xf…

Anaconda+Pycharm 项目运行保姆级教程(附带视频)

最近很多小白在问如何用anacondapycharm运行一个深度学习项目&#xff0c;进行代码复现呢&#xff1f;于是写下这篇文章希望能浅浅起到一个指导作用。 附视频讲解地址&#xff1a;AnacondaPycharm项目运行实例_哔哩哔哩_bilibili 一、项目运行前的准备&#xff08;软件安装&…

BN的 作用

1、背景&#xff1a; 卷积神经网络的出现&#xff0c;网络参数量大大减低&#xff0c;使得几十层的深层网络成为可能。然而&#xff0c;在残差网络出现之前&#xff0c;网络的加深使得网络训练变得非常不稳定&#xff0c;甚至出现网络长时间不更新或者不收敛的情形&#xff0c;…

ER模型理论和三范式

ER模型理论和三范式 各种关系多对一一对一一对多多对多 三范式理论函数依赖完全函数依赖部分函数依赖传递&#xff08;间接&#xff09;函数依赖 第一范式&#xff1a;属性&#xff08;表字段&#xff09;不可切割第二范式&#xff1a;不能存在 部分函数依赖(都存在完全函数依赖…

2款一键word生成ppt的AI工具,让职场办公更为简单!

在当下主打异步沟通的职场办公环境中&#xff0c;我们与很多人的沟通&#xff0c;都是通过书面材料来达成的&#xff0c;这就让 Word 或文档编辑软件变得更为重要&#xff0c;与此同时&#xff0c;有时为了凸现书面材料中的重点&#xff0c;我们还要将 word 文档转换为 ppt 来进…

2024年06月CCF-GESP编程能力等级认证Python编程五级真题解析

本文收录于专栏《Python等级认证CCF-GESP真题解析》&#xff0c;专栏总目录&#xff1a;点这里&#xff0c;订阅后可阅读专栏内所有文章。 一、单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09; 第 1 题 在Python中&#xff0c;print((c for c in “GESP”))的输…

MiniGPT-Med 通用医学视觉大模型:生成医学报告 + 视觉问答 + 医学疾病识别

MiniGPT-Med 通用医学视觉大模型&#xff1a;生成医学报告 视觉问答 医学疾病识别 提出背景解法拆解 论文&#xff1a;https://arxiv.org/pdf/2407.04106 代码&#xff1a;https://github.com/Vision-CAIR/MiniGPT-Med 提出背景 近年来&#xff0c;人工智能&#xff08;AI…

如何让自动化测试框架更自动化?

一、引言 ​对于大厂的同学来说&#xff0c;接口自动化是个老生常谈的话题了&#xff0c;毕竟每年的MTSC大会议题都已经能佐证了&#xff0c;不是大数据测试&#xff0c;就是AI测试等等&#xff08;越来越高大上了&#xff09;。不可否认这些专项的方向是质量智能化发展的方向&…

刷题(day02)

1、leetcode136.删除链表的结点 给定单向链表的头指针和一个要删除的节点的值&#xff0c;定义一个函数删除该节点。 返回删除后的链表的头节点。 示例 1: 输入: head [4,5,1,9], val 5 输出: [4,1,9] 解释: 给定你链表中值为 5 的第二个节点&#xff0c;那么在调用了你的函数…

Windows图形界面(GUI)-SDK-C/C++ - 应用程序结构

公开视频 -> 链接点击跳转公开课程博客首页 -> 链接点击跳转博客主页 目录 入口函数 窗口注册 窗口创建 窗口显示 窗口更新 消息循环 窗口过程 窗口销毁 调试信息 示例代码 入口函数 在Windows应用程序中&#xff0c;WinMain是主函数&#xff0c;作为应用程序…

网格化监控:Eureka与分布式服务网格的协同监控

网格化监控&#xff1a;Eureka与分布式服务网格的协同监控 引言 在微服务架构中&#xff0c;服务网格技术提供了一种有效的方式来管理和监控服务间的通信。Eureka作为Netflix开源的服务发现框架&#xff0c;虽然本身不直接提供服务网格的监控功能&#xff0c;但可以与服务网格…

设计模式探索:适配器模式

1. 适配器模式介绍 1.1 适配器模式介绍 适配器模式&#xff08;adapter pattern&#xff09;的原始定义是&#xff1a;将一个类的接口转换为客户期望的另一个接口&#xff0c;适配器可以让不兼容的两个类一起协同工作。 适配器模式的主要作用是把原本不兼容的接口&#xff0c…

【Python_GUI】thinker布局管理——place方法

place方法可以设置组件的大小以及组件在容器中的精确位置&#xff0c;其参数及含义如下&#xff1a; 参数含义X设置组件距离窗口左侧的水平距离y设置组件距离窗口顶部的垂直距离width设置组件的宽度height设置组件的高度relx设置组件距离窗口左侧的相对距离&#xff0c;范围为…

c++初阶学习----入门(上)

大家好啊。最近学习了一点关于c的知识。这不就迫不及待的来与大家分享了嘛。但我这也是现学现卖所以咧。有很多遗落甚至不对的地方希望大家可以在评论区里面指出来。这样也可以增加大家对知识的巩固。 c语言与c的联系 不知道大家看到c会不会不由自主的联想到C语言啊。毕竟都是…