Knife4j 介绍

Knife4j 官网

Knife4j是一款基于Swagger生成API文档的增强工具,它简化了开发者构建和管理RESTful API文档的过程。通过自动扫描项目中的接口信息,Knife4j能够生成详细、易读的API文档,无需手动编写和维护。它提供交互式的接口调试页面,方便验证接口正确性,同时支持接口聚合和分组,便于管理大型项目中的接口。此外,Knife4j还支持Markdown文档,以及定制化配置选项,使得API文档更加美观、灵活和易于展示。总体而言,Knife4j是一款功能强大的工具,能够提升API文档质量和开发效率,推动团队协作和沟通。

依赖引入

Knife4j其实就相当Swagger的升级版,相比于比Swagger要好用多了。

<!-- Knife4j -->
<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi2-spring-boot-starter</artifactId><version>4.0.0</version>
</dependency>

Knife4j 配置类

package com.hsqyz.config.common;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.ApiKey;
import springfox.documentation.service.AuthorizationScope;
import springfox.documentation.service.SecurityReference;
import springfox.documentation.service.SecurityScheme;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spi.service.contexts.SecurityContext;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;import java.util.ArrayList;
import java.util.List;/*** Knife4j 配置*/
@Configuration
@EnableSwagger2WebMvc // 开启Swagger
public class Knife4jConfiguration {@Bean(value = "defaultApi2")public Docket defaultApi2() {return new Docket(DocumentationType.SWAGGER_2)// 是否启用Swagger.enable(true)// 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息).apiInfo(new ApiInfoBuilder().title("API接口文档").description("API接口文档描述").termsOfServiceUrl("http://127.0.0.1:8080/")// 联系方式(这里以本人邮箱为例).contact("1926585708@qq.com").version("1.0.0").build())// 分组名称.groupName("default")// 设置哪些接口暴露给Swagger展示.select()// 这里指定Controller扫描包路径.apis(RequestHandlerSelectors.basePackage("com.hsqyz.controller"))// 路径选择器.paths(PathSelectors.any()).build()/*** 设置安全模式,swagger可以设置访问token*/.securitySchemes(securitySchemes()).securityContexts(securityContexts()).pathMapping("/");}/*** 安全模式,这里指定token通过Authorization头请求头传递*/private List<SecurityScheme> securitySchemes() {List<SecurityScheme> apiKeyList = new ArrayList<SecurityScheme>();apiKeyList.add(new ApiKey("Authorization", "Authorization", "header"));return apiKeyList;}/*** 安全上下文*/private List<SecurityContext> securityContexts() {List<SecurityContext> securityContexts = new ArrayList<>();securityContexts.add(SecurityContext.builder().securityReferences(defaultAuth()).build());return securityContexts;}/*** 默认的安全上引用*/private List<SecurityReference> defaultAuth() {AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];authorizationScopes[0] = authorizationScope;List<SecurityReference> securityReferences = new ArrayList<>();securityReferences.add(new SecurityReference("Authorization", authorizationScopes));return securityReferences;}}

版本说明

如果出现错误:

Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException

图例问题

这里提供两种修复方案

降低Spring Boot 版本到2.6.x以下版本

比如下面版本组合是兼容的

Spring Boot版本 Swagger 版本
2.5.6 2.9.2
SpringBoot版本不降级解决方案

配置文件中加上:

properties 格式

spring.mvc.pathmatch.matching-strategy=ant_path_matcher

yaml 格式

spring:  mvc:pathmatch:matching-strategy=ant_path_matcher

项目运行后,访问ip+端口号+/doc.html,比如:http://localhost:8080/doc.html

全局参数

在实际项目中访问接口都添加了权限,每次访问都要带一个请求头参数token。全局参数就是为了方便传一个固定的参数。当添加全局参数后,所有的接口都会带上该参数。


这里介绍2种设置全局参数的方法

第一种 【编码方式】

使用securitySchemes()securityContexts()来设置

引用代码

/*** 安全模式,这里指定token通过Authorization头请求头传递*/private List<SecurityScheme> securitySchemes() {List<SecurityScheme> apiKeyList = new ArrayList<SecurityScheme>();apiKeyList.add(new ApiKey("Authorization", "Authorization", "header"));return apiKeyList;}/*** 安全上下文*/private List<SecurityContext> securityContexts() {List<SecurityContext> securityContexts = new ArrayList<>();securityContexts.add(SecurityContext.builder().securityReferences(defaultAuth()).build());return securityContexts;}/*** 默认的安全上引用*/private List<SecurityReference> defaultAuth() {AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];authorizationScopes[0] = authorizationScope;List<SecurityReference> securityReferences = new ArrayList<>();securityReferences.add(new SecurityReference("Authorization", authorizationScopes));return securityReferences;}

效果:菜单上多了一个Authorize,在参数值中添加上信息

刷新一下,再打开接口就会发现多了个请求头部

第二种 【手动配置全局参数】

直接在菜单文档管理全局参数设置,然后添加参数:

添加保存

再打开接口就会发现请求头参数加上了

过滤拦截说明

如果使用了安全相关的框架,例如(SaTokenSpringSecurity、包括手动定义的拦截器与过滤器),可能会拦截到Knife4j的文档接口,导致文档加载失败,需要手动放行这方面的接口

Apifox 一键导入 knife4j 接口文档

点击导入项目

选择Knife4j,填入地址后进行解析

解析出来的地址就是你的分组接口详细信息地址,点击提交即可

参考文章

Spring Boot项目集成Knife4j接口文档的实例代码
knife4j v2.0 用户指南

SpringBoot轻松实现项目集成Knife4j接口文档相关推荐

  1. springboot项目集成java接口文档生成工具knife4j

    knifie knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,取名kni4j是希望她能像一把匕首一样小巧,轻量,并 ...

  2. SpringBoot集成knife4j接口文档

    knife4j介绍 knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案. 其他的详情请看官方文档: knife4j官方文档 首先创建一个spring boot 项目, ...

  3. Spring Boot 1.5.10项目引入knife4j接口文档

    介绍 knife4j是一个在线接口文档项目,对swaggger2进行增强,页面更加美观,功能更加强大 背景 在前后端分离的趋势下,团队一直没有接口文档规范,联调接口全凭一个个接口去代码里扒,后端同事忙 ...

  4. 【SpringBoot】22、SpringBoot中整合knife4j接口文档

    在项目开发中,web项目的前后端分离开发,APP开发,需要由前后端工程师共同定义接口,编写接口文档,之后大家都根据这个接口文档进行开发,到项目结束前都要一直维护 接口文档使得项目开发过程中前后端工程师 ...

  5. SPA 项目 之 后台接口文档

    SPA 项目 之 后台接口文档 SPA 项目 之 后台接口文档 用户注册 用户登录 数据增加 数据删除 数据修改 数据查询 SPA 项目 之 后台接口文档 用户注册 用户注册接口调用: http请求方 ...

  6. SpringBoot 配置 generator代码生成+knife4j接口文档(2种模板设置、逻辑删除、字段填充 含代码粘贴可用)保姆级教程(注意事项+建表SQL+代码生成类封装+测试类)

    保姆级教程,逻辑删除及字段自动填充设置,特别要说明的是本次用的是MySQL数据库,如果使用Oracle数据库是,数据库配置需要改变,数据库表一定要大写,否则无法生成代码. 数据库表 CREATE TA ...

  7. springboot集成Swagger2接口文档

    <!-- Swagger 接口文档 --><dependency><groupId>io.springfox</groupId><artifact ...

  8. knife4j接口文档

    knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,取名knife4j是希望它能像一把匕首一样小巧,轻量,并且功能强悍 ...

  9. idea swagger生成接口文档_spring boot集成Swagger-UI接口文档

    本文介绍如何用spring boot集成Swagger-UI,实现项目在线接口文档 一.Swagger-UI简介 Swagger是一个Restful风格接口的文档在线自动生成和测试的框架 官网对Swa ...

  10. 轻松完成word格式的接口文档

    今天在开发完一个项目的接口之后,公司领导过来说:"需要一份word格式的接口文档,***本门主任需要看这些文档,记得接口文档做的好看一点".然后领导拍拍我的肩膀转身就走了,身为一个 ...

最新文章

  1. 谁是全球最顶级AI实验室?DeepMind、OpenAI和FAIR霸榜前三
  2. 【记录】IDEA未正确关闭导致打开报错,进不了主界面,含解决办法
  3. Python基础闯关失败总结
  4. 怎么把一个网页作为背景套在另一个网页上_设计科技公司网站背景的六个小技巧...
  5. springboot定时备份MYSQL_spring boot 定时备份数据库
  6. php混淆解密,关于php混淆加密解密详解
  7. 小米node2红外_蓝牙,移动侦测,环境光,小米人体传感器2
  8. sparc处理器开发工具_SPARC处理器启动代码的分析与编程
  9. 微信小程序图片无法存入云开发数据库,求解决
  10. 【2023电赛备赛】使用sysconfig对ccs进行图形化编程
  11. SQLServer附加数据库(打开.mdf文件),及报错问题解决
  12. android手机助手源代码,IOS Android 手机助手原理以及源码(cmake 构建)
  13. 成本对象(生产订单)控制
  14. php爬虫QueryList使用
  15. 小宝站群-MIP定时推送软件SEO
  16. 解读:CVPR1903_图卷积网络GCN无监督人脸聚类
  17. 2023年非科班出身还能通过IT培训,转行做程序员吗?
  18. Python的UDP通讯(收发一体、多线程)
  19. AI视频智能分析技术与应用(二)
  20. 如何在Windows 10上创建和设置虚拟硬盘

热门文章

  1. L1-024 后天 (5 分)
  2. 一个人的命运决定于晚上8点到10点之间
  3. 【我写过最蠢的代码是】尊嘟假嘟 O.o
  4. 每日科创板之620:天淮科技注册生效 另有3家过会3家已问询
  5. mysql-数据库的主从同步,实现读写分离
  6. 一、window配置微软商店中的Ubuntu,及错误解决方法
  7. Vue中bus传值的理解
  8. 阿里巴巴推出D.Design文生图网站(免费10-20张图)
  9. 鱼哥赠书活动第①期:《脑洞大开:透测试另类实战攻略》《Kali Linux高级渗透测试》《CTF实战:技术、解题与进阶》《构建新型网络形态下的网络空间安全体系》
  10. javaSrcipt——练习正则表达式(初级练习集中营)