API文档生成工具-----Knife4介绍

API文档生成工具-----Knife4j的详细介绍、配置及应用

文章目录

    • 一、Knife4j是什么?
    • 二、Knife4j如何配置?
    • 三、在Controller类或方法上如何使用?
    • 四、如何访问API文档?
    • 其他项目应用

一、Knife4j是什么?

Knife4j是一个基于Swagger构建的开源Java API文档工具,它为Java开发者提供了生成、展示和调试API文档的功能。它提供了一套美观且功能强大的界面,可以自动生成API文档,并支持接口分组、参数设置、请求示例、响应模型配置等高级功能。
Knife4j的特点包括:
1.界面友好:Knife4j提供了一个漂亮、直观的界面,使得API文档易于阅读和理解。
2.自动生成文档:通过集成Swagger,Knife4j可以自动从代码中解析API注解,生成规范的API文档。
3.接口分组:可以根据业务需求将接口进行分组,方便用户对接口进行组织和查看。
4.参数设置:支持多种参数类型的展示和设置,包括基本类型、对象、集合等。
5.请求示例:可以显示接口请求示例,并提供调试接口的功能,方便用户进行调试和测试。
6.响应模型配置:提供全局统一的响应模型配置,方便用户对接口返回数据进行管理和定义。
使用Knife4j可以帮助开发人员快速生成并展示API文档,方便团队协作和接口开发。同时,Knife4j也提供了丰富的配置选项和样式定制功能,使得用户可以根据自己的需求进行个性化定制。

二、Knife4j如何配置?

1.添加依赖:
在pom.xml中添加Knife4j的依赖项。代码如下:

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

2.配置Knife4j
如果需要自定义Knife4j的配置,可以自己创建一个配置类,来指定文档的访问路径、标题、版本等信息。
以下是一个手动配置 Knife4j 的示例:

/*** Knife4j配置类*/
@Configuration
@EnableKnife4j
public class Knife4jConfiguration {/*** 【重要】指定Controller包路径*/private String basePackage = "xx.xx.xx";/*** 主机名*/private String host = "http://abc.cn";/*** 标题*/private String title = "xx商城后台管理平台在线API文档";/*** 简介*/private String description = "xx商城后台管理平台在线API文档";/*** 服务条款URL*/private String termsOfServiceUrl = "http://www.apache.org/licenses/LICENSE-2.0";/*** 联系人*/private String contactName = "Java教学部";/*** 联系网址*/private String contactUrl = "http://java.aa.cn";/*** 联系邮箱*/private String contactEmail = "xx@yy.cn";/*** 版本号*/private String version = "1.0";/*** OpenApiExtensionResolver 是Knife4j中的一个扩展点,用于解析并加载自定义的OpenAPI扩展信息。*/@Autowiredprivate OpenApiExtensionResolver openApiExtensionResolver;/*** 创建并配置 Docket 对象,用于 Swagger 文档的生成和展示** @return 配置好的 Docket 对象*/@Beanpublic Docket docket() {// 定义分组名称String groupName = "1.0.0";// 创建并配置 Docket 对象Docket docket = new Docket(DocumentationType.SWAGGER_2).host(host) // 设置主机名.apiInfo(apiInfo()) // 设置 API 文档信息.groupName(groupName) // 设置分组名称.select().apis(RequestHandlerSelectors.basePackage(basePackage)) // 设置扫描的 Controller 包路径.paths(PathSelectors.any()) // 设置 API 路径匹配规则.build().extensions(openApiExtensionResolver.buildExtensions(groupName)); // 构建扩展信息return docket;}/*** 创建并配置 ApiInfo 对象,用于设置 Swagger 文档的基本信息** @return 配置好的 ApiInfo 对象*/private ApiInfo apiInfo() {return new ApiInfoBuilder().title(title) // 设置标题.description(description) // 设置简介.termsOfServiceUrl(termsOfServiceUrl) // 设置服务条款 URL.contact(new Contact(contactName, contactUrl, contactEmail)) // 设置联系信息.version(version) // 设置版本号.build();}
}

注意:对应参数需要换成自己的!!!

三、在Controller类或方法上如何使用?

在你的Controller类或方法上使用Knife4j提供的注解来生成API文档。常用的注解包括:
@Api:作用于Controller类上,用于标识该类为一个API文档的控制器。
@ApiOperation:作用于Controller类中的方法上,用于描述API接口的功能和作用。
@ApiImplicitParam:作用于Controller类中的方法参数上,用于描述方法参数的详细信息。
@ApiParam:作用于Controller类中的方法参数上,用于描述方法参数的详细信息。
以下是一个使用Knife4j注解的示例:

@RestController  
@RequestMapping("/api")
@Api(tags  = "示例API") 
public class ExampleController {@ApiOperation("获取用户信息")@ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long", paramType = "path")@GetMapping("/users/{id}")public User getUser(@PathVariable Long id) {// ...}
}

四、如何访问API文档?

1.启动你的Spring Boot应用程序。
2.确保项目启动成功之后,在浏览器中通过以下网址来访问API文档:

http://localhost:端口号/doc.html

其他项目应用

<!--java生成接口文档-->
<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><knife4j.version>2.0.7</knife4j.version>
</dependency>
import com.fasterxml.classmate.TypeResolver;
import com.yuntongxun.aihelper.api.dto.QualityContent;
import com.yuntongxun.aihelper.api.dto.condition.TriggerConditionDTO;
import com.yuntongxun.aihelper.api.entry.mq.RecognizeMessage;
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.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;/*** @author * @Description* @Date 创建于 2021/6/21 10:49 上午*/
@Configuration
@EnableSwagger2WebMvc
public class Knife4jConfiguration {@Bean(value = "Api2")public Docket defaultApi2(TypeResolver typeResolver) {return new Docket(DocumentationType.SWAGGER_2).apiInfo(new ApiInfoBuilder()//.title("swagger-bootstrap-ui-demo RESTful APIs").description("# aihelper APIs").termsOfServiceUrl("http://www.yuntongxun.com/").version("5.0").build())//分组名称.groupName("5.0版本").select()//这里指定Controller扫描包路径.apis(RequestHandlerSelectors.basePackage("com.yuntongxun.aihelper.api.controller")).paths(PathSelectors.any()).build().additionalModels(typeResolver.resolve(QualityContent.SensitiveWordsContent.class)).additionalModels(typeResolver.resolve(QualityContent.RegexContent.class)).additionalModels(typeResolver.resolve(QualityContent.FlowContent.class)).additionalModels(typeResolver.resolve(QualityContent.SpeechSpeedContent.class)).additionalModels(typeResolver.resolve(QualityContent.MuteContent.class)).additionalModels(typeResolver.resolve(QualityContent.SentimentContent.class)).additionalModels(typeResolver.resolve(QualityContent.InterposeContent.class)).additionalModels(typeResolver.resolve(TriggerConditionDTO.class)).additionalModels(typeResolver.resolve(RecognizeMessage.class));}
}

参考 :链接

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

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

相关文章

移动端1像素的解决方案?

在移动端开发中&#xff0c;由于不同设备的像素密度差异&#xff0c;1像素问题成为了一个常见的难题。如果我们不对这个问题进行针对性的解决&#xff0c;那么会导致页面显示效果不美观&#xff0c;甚至影响用户体验。 以下是一些解决方案&#xff1a; 使用css3的scale属性&am…

网络基础介绍

1.网线制作 1.1 网线制作需要的工具 网线 网线钳 水晶头 测试仪 ​编辑 1.2 网线的标准 1.3 网线的做法 2.集线器&交换机&路由器的介绍 3.OSI七层模型 4.路由器的设置 4.1 常见的路由器设置地址 4.2 常见的路由器账号密码 4.3 登录路由器 设置访客网…

管理类联考——数学——真题篇——按知识分类——代数——数列

【等差数列 ⟹ \Longrightarrow ⟹ 通项公式&#xff1a; a n a 1 ( n − 1 ) d a m ( n − m ) d n d a 1 − d A n B a_n a_1(n-1)d a_m(n-m)dnda_1-dAnB an​a1​(n−1)dam​(n−m)dnda1​−dAnB ⟹ \Longrightarrow ⟹ A d &#xff0c; B a 1 − d Ad&#x…

从零开始构建高效的网校平台:在线教育系统源码的开发指南

随着科技的不断发展&#xff0c;在线教育在现代社会中变得愈发重要。本文将为您提供一份详尽的指南&#xff0c;从零开始构建高效的网校平台&#xff0c;覆盖在线教育系统源码的关键开发步骤。 第一步&#xff1a;明确需求和目标 在开始之前&#xff0c;明确您的网校平台的需…

软件测试工程师的职业发展方向

一、软件测试工程师大致有4个发展方向: 1 资深软件测试工程师 一般情况&#xff0c;软件测试工程师可分为测试工程师、高级测试工程师和资深测试工程师三个等级。 达到这个水平比较困难&#xff0c;这需要了解很多知识&#xff0c;例如C语言&#xff0c;JAVA语言&#xff0c…

《opencv实用探索·二十一》人脸识别

Haar级联分类器 在OpenCV中主要使用了两种特征&#xff08;即两种方法&#xff09;进行人脸检测&#xff0c;Haar特征和LBP特征。用的最多的是Haar特征人脸检测。 Haar级联分类器是一种用于目标检测的机器学习方法&#xff0c;它是一种基于机器学习的特征选择方法&#xff0c;…

【JAVA】仓库、货架、货物

当前只有添加、查询&#xff0c;没有删除和修改部分&#xff1a; import java.util.LinkedList;class Goods {String id;String name;int price;public Goods(String id, String name, int price) {this.id id;this.name name;this.price price;}Overridepublic String toS…

Nginx 实战闲谈第3讲:Centos7环境下Nginx版本升级

前言 在一些环境下&#xff0c;由于安装的Nginx版本比较低&#xff0c;就衍生了升级的需求。虽说网上一抓一大把&#xff0c;但是为了把这个专栏完善&#xff0c;还是把升级的过程记录一下。废话不多说&#xff0c;上干货。 步骤一、下载新版本的安装包&#xff08;挑个稳定一…

【matlab】绘制竖状双组渐变柱状图

【matlab】绘制竖状双组渐变柱状图

QT 前端技术 QSS(1)

伪装态是指当鼠标悬停在按钮上的时候&#xff0c;按钮的字体背景颜色等会发生改变。 这句话意思在this里面找到QTextEdit控件#后面表示指定的控件名称就是从所有QTextEdit中选出叫做lbsize的QTextEdit并对其进行后面的操作。 如果将QTextEdit#lbsize删除的话就是将this中全部的…

在 WebRTC 中,Offer/Answer 模型是协商 WebRTC 连接参数的关键部分

在 WebRTC 中&#xff0c;Offer/Answer 模型是协商 WebRTC 连接参数的关键部分。当 Offer 和 Answer 交换失败时&#xff0c;可能涉及到多个原因。以下是一些可能的问题和解决方案&#xff1a; SDP 格式错误&#xff1a; Session Description Protocol&#xff08;SDP&#xff…

Ubuntu Docker图形界面实现

1、安装Docker 首先&#xff0c;我们需要安装Docker。Docker是一个开源的容器化平台&#xff0c;可以帮助我们方便地部署和管理应用程序打开终端&#xff0c;并执行以下命今来更新软件包列表:sudo apt update 接着&#xff0c;执行以下命今来安装Docker:sudo apt install docke…

ansibe的脚本---playbook剧本

playbook剧本组成部分&#xff1a; 1、task 任务&#xff1a; 主要是包含要在目标主机上的操作&#xff0c;使用模块定义操作。每个任务都是模块的调用。 2、variables变量&#xff1a;存储和传递数据。变量可自定义&#xff0c;可以在playbook中定义为全局变量&#xff0c;可…

亚信安慧AntDB数据库——助力5G计费核心替换,全面自主可控

数字经济时代&#xff0c;5G以更快、更丰富、更智能的连接方式服务于各行各业。AntDB数据库&#xff0c;源于亚信科技&#xff0c;自2008年起成功落地全国24个省份的中国移动、中国电信、中国联通和中国广电等运营商项目&#xff0c;为数字化服务和信息化基础建设提供支持。 在…

Linux Mint 21.3 代号为“Virginia”开启下载

Linux Mint 团队今天放出了 Linux Mint 21.3 Beta ISO 镜像&#xff0c;正式版计划在今年圣诞节发布。 支持 在实验性支持 Wayland 之外&#xff0c;Cinnamon 6.0 版 Linux Mint 21.3 Beta 镜像还带来了其它改进&#xff0c;Nemo 文件夹管理器右键菜单支持下载相关操作。 Cin…

【python】进阶--->并发编程之协程

一、协程 是另外一种实现多任务的方式,只不过比线程占用更小的执行单元(需要的资源).因为它自带cpu上下文,就可以在合适的时机,从一个协程切换到另一个协程. (任务数量多于cpu时)系统在很短的时间内,将cpu轮流分配给不同的任务执行,造成了多任务同时运行的错觉.而每个任务在运行…

C++多线程学习笔记001多线程基本操作

C多线程学习笔记001多线程基本操作 创建线程 #include<iostream> #include<thread> #include<unistd.h>void count_down(size_t num){std::cout << "开始" << num << "秒倒计时&#xff01;" << std::endl; f…

1.CentOS7网络配置

CentOS7网络配置 查看网络配置信息 ip addr 或者 ifconfig 修改网卡配置信息 vim /etc/sysconfig/network-scripts/ifcfg-ens192 设备类型&#xff1a;TYPEEthernet地址分配模式&#xff1a;BOOTPROTOstatic网卡名称&#xff1a;NAMEens192是否启动&#xff1a;ONBOOTye…

暴雨AI服务器:推动大模型算力底座发展

语言大模型作为人工智能领域的重要分支&#xff0c;其强大的自然语言处理能力和模仿人类的对话决策能力&#xff0c;正逐渐成为人们的关注焦点。近日&#xff0c;据央视新闻报道&#xff0c;工业和信息化部赛迪研究院数据显示&#xff0c;今年我国语言大模型市场规模实现较快提…

最新鸿蒙HarmonyOS 使用Progress、Toggle开发一个接单界面

Progress 进度条组件&#xff0c;用于显示内容加载或操作处理等进度。 接口 Progress(options: {value: number, total?: number, type?: ProgressType}) Toggle组件提供勾选框样式、状态按钮样式及开关样式。 接口 Toggle(options: { type: ToggleType, isOn?: boolean …