Knife4j 生成 API 文档

2024-06-09 14:04
文章标签 文档 生成 api knife4j

本文主要是介绍Knife4j 生成 API 文档,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • Knife4j 简介
    • 使用步骤
    • Knife4j 常用注解的列表
    • 案例
    • 注意

Knife4j 简介

Knife4j 是一个增强的 Swagger 文档生成工具,提供了更加友好的界面和更多功能,使得 API 文档更加美观且易于使用。它是基于 Spring Boot 和 Swagger 进行封装的,因此非常适合 Spring Boot 项目。

使用步骤

第一步:添加依赖

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

第二步:配置 Swagger 配置类

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;@Configuration
public class SwaggerConfig {@Beanpublic Docket createRestApi() {return new Docket(DocumentationType.OAS_30).apiInfo(apiInfo()).select()//TODO 改成自己的包名.apis(RequestHandlerSelectors.basePackage("com.example.hac.controller")).paths(PathSelectors.any()).build();}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("API 文档").description("API 接口文档的描述信息").version("1.0").build();}
}

第三步:配置 application.yml

knife4j:enable: true  # 启用 Knife4j 功能 springdoc:api-docs:enabled: true  # 启用 SpringDoc API 文档生成 swagger-ui:enabled: true  # 启用 Swagger UI 界面 

Knife4j 常用注解的列表

注解作用示例
@Api标注在类上,用于描述该类的作用和功能,可以分组管理 API。@Api(tags = "用户管理")
@ApiOperation标注在方法上,用于描述一个具体的操作(HTTP 请求),包括操作的功能、描述和其他细节。@ApiOperation(value = "获取用户信息", notes = "根据用户ID获取用户详细信息")
@ApiModel标注在类上,用于描述一个 Model(实体类)的详细信息。@ApiModel(value = "用户信息")
@ApiModelProperty标注在实体类的属性上,用于描述属性的详细信息,如字段说明、示例值等。@ApiModelProperty(value = "用户名字", example = "张三")
@ApiParam标注在方法参数上,用于描述参数信息,如参数名称、类型、是否必填等。@ApiParam(name = "id", value = "用户ID", required = true)
@ApiResponse标注在方法上,用于描述单个 HTTP 响应。@ApiResponse(code = 200, message = "请求成功")
@ApiResponses标注在方法上,用于描述多个 HTTP 响应。@ApiResponses({@ApiResponse(code = 200, message = "请求成功"), @ApiResponse(code = 404, message = "未找到")})
@ApiImplicitParam标注在方法上,用于描述单个隐式参数。@ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "int", paramType = "query")
@ApiImplicitParams标注在方法上,用于描述多个隐式参数。@ApiImplicitParams({@ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "int", paramType = "query")})
@ApiIgnore用于忽略某个类、方法或参数,使其不在 Swagger 文档中显示。@ApiIgnore

案例

第一步:定义一个pojo

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;@Data
@ApiModel(value = "用户信息")
public class User {@ApiModelProperty(value = "用户名字", example = "1")private String name;@ApiModelProperty(value = "用户年龄", example = "20")private String age;
}

第二步:编写controller service mapper

@RestController
@RequestMapping(value = "/users")
@Api(tags = "用户管理")
public class TestController {@Autowiredprivate TestService testService;@ApiOperation(value = "获取用户信息", notes = "根据用户ID获取用户详细信息")@GetMapping(value = "/{id}")public User getById(@PathVariable("id") int id) {return testService.getById(id);}
}

第三步:启动项目 访问:http://localhost:8080/doc.html

在这里插入图片描述

在这里插入图片描述

注意

可能会遇到这个错误Failed to start bean 'documentationPluginsBootstrapper';
在这里插入图片描述
原因:这个错误是因为 Spring Boot 2.6.0 中引入了新的路径模式匹配策略,而 Swagger 3.0.0 使用了旧的路径匹配策略。这导致了 documentationPluginsBootstrapper 的启动失败
解决方法1
在application.yml中添加下面这

spring:mvc:pathmatch:matching-strategy: ANT_PATH_MATCHER

解决方法2:降低 Spring Boot 的版本

 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.5</version></parent>

❤觉得有用的可以留个关注❤

这篇关于Knife4j 生成 API 文档的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1045388

相关文章

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

C#实现一键批量合并PDF文档

《C#实现一键批量合并PDF文档》这篇文章主要为大家详细介绍了如何使用C#实现一键批量合并PDF文档功能,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言效果展示功能实现1、添加文件2、文件分组(书签)3、定义页码范围4、自定义显示5、定义页面尺寸6、PDF批量合并7、其他方法

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

使用Python实现Word文档的自动化对比方案

《使用Python实现Word文档的自动化对比方案》我们经常需要比较两个Word文档的版本差异,无论是合同修订、论文修改还是代码文档更新,人工比对不仅效率低下,还容易遗漏关键改动,下面通过一个实际案例... 目录引言一、使用python-docx库解析文档结构二、使用difflib进行差异比对三、高级对比方

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

C#高效实现Word文档内容查找与替换的6种方法

《C#高效实现Word文档内容查找与替换的6种方法》在日常文档处理工作中,尤其是面对大型Word文档时,手动查找、替换文本往往既耗时又容易出错,本文整理了C#查找与替换Word内容的6种方法,大家可以... 目录环境准备方法一:查找文本并替换为新文本方法二:使用正则表达式查找并替换文本方法三:将文本替换为图

C#使用Spire.XLS快速生成多表格Excel文件

《C#使用Spire.XLS快速生成多表格Excel文件》在日常开发中,我们经常需要将业务数据导出为结构清晰的Excel文件,本文将手把手教你使用Spire.XLS这个强大的.NET组件,只需几行C#... 目录一、Spire.XLS核心优势清单1.1 性能碾压:从3秒到0.5秒的质变1.2 批量操作的优雅

Python使用python-pptx自动化操作和生成PPT

《Python使用python-pptx自动化操作和生成PPT》这篇文章主要为大家详细介绍了如何使用python-pptx库实现PPT自动化,并提供实用的代码示例和应用场景,感兴趣的小伙伴可以跟随小编... 目录使用python-pptx操作PPT文档安装python-pptx基础概念创建新的PPT文档查看