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

相关文章

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取

Android实现在线预览office文档的示例详解

《Android实现在线预览office文档的示例详解》在移动端展示在线Office文档(如Word、Excel、PPT)是一项常见需求,这篇文章为大家重点介绍了两种方案的实现方法,希望对大家有一定的... 目录一、项目概述二、相关技术知识三、实现思路3.1 方案一:WebView + Office Onl

Python实现word文档内容智能提取以及合成

《Python实现word文档内容智能提取以及合成》这篇文章主要为大家详细介绍了如何使用Python实现从10个左右的docx文档中抽取内容,再调整语言风格后生成新的文档,感兴趣的小伙伴可以了解一下... 目录核心思路技术路径实现步骤阶段一:准备工作阶段二:内容提取 (python 脚本)阶段三:语言风格调

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

Python如何自动生成环境依赖包requirements

《Python如何自动生成环境依赖包requirements》:本文主要介绍Python如何自动生成环境依赖包requirements问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录生成当前 python 环境 安装的所有依赖包1、命令2、常见问题只生成当前 项目 的所有依赖包1、

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll

MySQL中动态生成SQL语句去掉所有字段的空格的操作方法

《MySQL中动态生成SQL语句去掉所有字段的空格的操作方法》在数据库管理过程中,我们常常会遇到需要对表中字段进行清洗和整理的情况,本文将详细介绍如何在MySQL中动态生成SQL语句来去掉所有字段的空... 目录在mysql中动态生成SQL语句去掉所有字段的空格准备工作原理分析动态生成SQL语句在MySQL

Java利用docx4j+Freemarker生成word文档

《Java利用docx4j+Freemarker生成word文档》这篇文章主要为大家详细介绍了Java如何利用docx4j+Freemarker生成word文档,文中的示例代码讲解详细,感兴趣的小伙伴... 目录技术方案maven依赖创建模板文件实现代码技术方案Java 1.8 + docx4j + Fr

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、