返回顶部
首页 > 资讯 > 后端开发 > Python >Spring Boot 集成接口管理工具 Knife4j
  • 526
分享到

Spring Boot 集成接口管理工具 Knife4j

2024-04-02 19:04:59 526人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录前言集成过程创建 Spring Boot 项目添加依赖配置添加编写 Controller 层启动测试踩过的坑空指针异常请求路径未找到总结前言 之前介绍了如何在 spring Bo

前言

之前介绍了如何在 spring Boot 中集成 swagger2 和 Swagger3,对于我们日常的接口管理已经够用了。但是作为一个颜值党,无论是 Swagger2 还是 Swagger3,都难以满足我们的审美。而且 Swagger2 和 Swagger3 都已经好久没更新了,更新还是比较慢的。

偶然之间发现了一个国产的接口文档管理工具 Knife4j,它基于 Swagger 而来,但是又对 Swagger 进行了增强,增加两个越来越多的个性化需求,可以说兼具颜值与实力了。今天我们就来看看,如何在 Spring Boot 中集成 Knife4j 这个接口文档管理工具。

集成过程

创建 Spring Boot 项目

既然要在 Spring Boot 中使用 Knife4j,那首先就得创建一个 Spring Boot 项目。当然,我在之前已经写过文章介绍如何创建 Spring Boot 项目了,所以这里不再赘述。如果你还对 Spring Boot 创建方式不太熟悉,可以参考我之前的文章:Spring Boot 教程之创建项目的三种方式

添加依赖

既然是用 Maven 来管理项目依赖,那我们在项目 pom.xml 中引入 Knife4j 的相关依赖包,引入代码如下。

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

配置添加

接着在项目中创建一个配置包 config,用于配置 Swagger 的配置依赖。在这里可以配置扫描的 controller 所在的包,设置接口文档的标题、描述、作者信息等。

这里其实和 Swagger2 和 Swagger3 很相似,Swagger 也是可以通过配置类来指定这些信息。

package com.cunyu.SpringBootknife4jdemo.config;
import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
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.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.WEB.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
@EnableKnife4j
public class Knife4jConfiguration {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .useDefaultResponseMessages(false)
                .apiInfo(apiInfo())
                .select()                .apis(RequestHandlerSelectors.basePackage("com.cunyu.springbootknife4jdemo.controller"))
                .paths(PathSelectors.any())
                .build();

    }
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .description("Kinfe4j 集成测试文档")
                .contact(new Contact())
                .version("v1.1.0")
                .title("API测试文档")
                .build();
    }
}

编写 Controller 层

接着我们编写一个测试的 controller,用于在 Knife4j 中展示用,代码如下。

@Api(tags = "测试模块")
@RestController
public class DemoController {
    @ApiImplicitParam(name = "name", value = "姓名", required = true)
    @ApiOperation(value = "入门程序,Hello World")
    @PostMapping("/helloWorld")
    public ResponseEntity<String> helloWorld(@RequestParam(value = "name") String name) {
        return ResponseEntity.ok("Hello World," + name);
    }
}

启动测试

然后将项目启动起来,接着到浏览器中去打开 Http://localhost:8080/doc.html,就会出现以下的主界面。这里有我们之前在配置类中所设置的一些接口信息,此外,还对接口进行了统计。因为我们代码中只写了一个 POST 的请求,所以这里统计出只有一个 POST 请求。

打开具体接口,这里就有我们接口的请求和响应的一些情况说明。

点击左侧 调试 按钮,我们就可以在 Knife4j 中测试我们的接口。

踩过的坑

当然,如果你按照以上步骤顺利打开了 Knife4j 的文档管理页面,那接下来的内容你大可不必了解。但如果你按照上边步骤搭建过程中也出现了问题,那不妨看看以下是否有你遇到的 Bug

空指针异常

首先是报空指针异常,报错信息如下。

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

经过查询资料可知,这是因为 Springfox 使用的路径匹配是基于 AntPathMatcher 的,但是由于我使用的是 Spring Boot 2.6.x 版本,正好这个版本使用的是 PathPatternMatcher,所以才会出现这个问题。所以这里主要可以通过两种方式来解决。

第一种,无可厚非,就是将我们的 Spring Boot 的版本降低,从 2.6.x 降到 2.5.x,此时就应该是可以了,这里可以自己去试一下。

第二种,既然我们都已经用上 2.6.x 版本了,那我们就是不想降低版本咋整。此时,我们只需要在主程序启动类中加上 @EnableWebmvc 这个注解。然后再次启动程序,你就会发现启动成功了!

@EnableWebMvc
@SpringBootApplication
public class SpringbootKnife4jDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootKnife4jDemoApplication.class, args);
    }
}

请求路径未找到

一山放过一山拦,以为翻过了上面的山,就能成功了。没想到出师不利,这不又遇到了报错请求路径未找到。

当我们成功启动项目后,在浏览器中打开 http://localhost:8080/doc.html,却没想到迎接我们的不是成功界面,而是下面的 Whitelabel Error Page

然后到 idea 中一看日志,程序照常运行,也没报错,但是给我们抛出了一个 WARN,警告信息如下:

No mapping for GET /doc.html

这是因为我们为了解决上面的 Bug 而使用到了 @EnableWebMvc,由于它实现了 WebMvcConfigurer 接口,所以会导致我们访问识别。

这时候问题就来了,上面又需要这个注解,但是下面这个问题又不需要,那该怎么办呢?

其实很简单,既然我们要保留 @EnableWebMvc,那我们去配置个规则不就好了。

在项目的 config 包下,我们新建一个配置类 WebMvcConfigurer 记成 WebMvcConfigurationSupport 类,接着将 dom.html 过滤掉即可。

@Configuration
public class WebMvcConfigurer extends WebMvcConfigurationSupport {
    @Override
    public void addResourceHandlers(ResourceHandlerReGIStry registry) {
        registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
        registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
        super.addResourceHandlers(registry);
    }
}

完成上述配置后,再去运行项目,再到浏览器中去访问 http://localhost:8080/doc.html 应该就能正常访问 Knife4j 文档管理页面了。

总结

文章主要讲了下如何集成并且进行一个最简单的接口调试,此外,对于文中集成是所遇到的 Bug,如果你没有遇到,那么你应该顺利集成了

到此这篇关于Spring Boot 集成接口管理工具 Knife4j的文章就介绍到这了,更多相关Spring Boot 集成 Knife4j内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Spring Boot 集成接口管理工具 Knife4j

本文链接: https://lsjlt.com/news/149417.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Spring Boot 集成接口管理工具 Knife4j
    目录前言集成过程创建 Spring Boot 项目添加依赖配置添加编写 Controller 层启动测试踩过的坑空指针异常请求路径未找到总结前言 之前介绍了如何在 Spring Bo...
    99+
    2024-04-02
  • Spring Boot集成接口管理工具Knife4j怎么用
    这篇文章主要讲解了“Spring Boot集成接口管理工具Knife4j怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring Boot集成接口管理工具Knif...
    99+
    2023-06-30
  • Spring Boot项目集成Knife4j接口文档的实例代码
    目录1、在pom.xml引入依赖包2、创建Knife4j配置文件3、使用Knife4j注解4、全局参数Knife4j就相当于是swagger的升级版,对于我来说,它比swagger要...
    99+
    2024-04-02
  • Spring Boot项目集成Knife4j接口文档的实例代码怎么写
    本篇文章给大家分享的是有关Spring Boot项目集成Knife4j接口文档的实例代码怎么写,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Knife4j就相当于是s...
    99+
    2023-06-22
  • spring boot集成smart-doc自动生成接口文档详解
    目录前言功能特性1 项目中创建 /src/main/resources/smart-doc.json配置文件2 配置内容如下(指定文档的输出路径)3 pom.xml下添加配置4 运行...
    99+
    2024-04-02
  • SpringBoot整合接口管理工具Swagger
    目录一、Swagger简介二、Springboot整合swagger1、添加swagger坐标2、Swagger Helloword 实现2.1、创建springboot项目2.2、...
    99+
    2023-05-16
    SpringBoot整合Swagger 接口管理工具Swagger SpringBoot Swagger
  • 工具 | PG 集群复制管理工具 repmgr
    作者:颜博 青云科技数据库研发工程师 目前从事 PostgreSQL 产品开发工作,热衷于 PostgreSQL 数据库的学习和研究 | REPMGR 简介 repmgr[1] 是一套开源工具,用于管理 PostgreSQL 服务器集...
    99+
    2015-10-17
    工具 | PG 集群复制管理工具 repmgr
  • WEB接口管理工具RAP有什么用
    这篇文章主要介绍了WEB接口管理工具RAP有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 RAP是一个...
    99+
    2024-04-02
  • spring boot动态生成接口怎么实现
    本篇内容主要讲解“spring boot动态生成接口怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“spring boot动态生成接口怎么实现”吧!在某些业务场景中,我...
    99+
    2023-06-21
  • spring boot集成kafka的spring-kafka底层原理是什么
    这篇“spring boot集成kafka的spring-kafka底层原理是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一...
    99+
    2023-06-29
  • SpringBoot整合接口管理工具Swagger怎么使用
    这篇“SpringBoot整合接口管理工具Swagger怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringB...
    99+
    2023-07-06
  • Spring boot security权限管理集成cas单点登录功能的实现
    目录1.Spring boot集成Spring security2.部署CAS server3.配置CAS client挣扎了两周,Spring security的cas终于搞出来了...
    99+
    2024-04-02
  • Spring Boot如何与NumPy集成,加速数据处理?
    随着数据处理的需求越来越高,数据处理的速度也成为了一个关键问题。NumPy是一个高性能的科学计算库,可以在Python中进行矩阵运算、数值分析、图像处理等操作,而Spring Boot则是一个快速构建应用程序的框架,可以帮助开发人员快速构...
    99+
    2023-11-13
    大数据 numy spring
  • 集成系统项目管理工程
    简介 集成系统项目管理工程是一项综合性的任务,旨在确保项目的成功完成。它涵盖了从项目规划到实施、监控和控制的全过程,包括项目需求分析、资源分配、风险评估和应对措施等。本文将探讨集成系统项目管理工程的重要性以及如何有效地实施。项目管理工程的要...
    99+
    2024-01-16
    项目管理 工程 系统
  • ORACLE RAC集群配置管理工具-SRVCTL
    SRVCTL概述 SRVCTL是ORACLE RAC集群配置管理的工具,可以管理Database、Instance、ASM、Service、Listener和Node Application,N...
    99+
    2024-04-02
  • 如何理解集成测试工具Tessy
    如何理解集成测试工具Tessy,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。        Tessy是一个专门针对嵌入...
    99+
    2023-06-03
  • 基于Spring接口集成Caffeine+Redis两级缓存
    目录前言改造JSR107 规范CacheCacheManager配置&使用分布式环境改造定义消息体Redis消息配置消息消费逻辑修改DoubleCache测试总结前言 在上一...
    99+
    2024-04-02
  • spring boot 动态生成接口实现类的场景分析
    目录一:定义注解二:建立动态代理类三:注入spring容器四:编写拦截器五:新建测试类在某些业务场景中,我们只需要业务代码中定义相应的接口或者相应的注解,并不需要实现对应的逻辑。 比...
    99+
    2024-04-02
  • Spring与Python集成:如何管理NPM依赖?
    随着前端技术的发展,现在很多Web应用都采用了前后端分离的架构,前端采用Vue、React等框架,后端采用Spring Boot、Django等框架。而在前端开发中,NPM已经成为了必不可少的工具,但是在Java或Python项目中,如何...
    99+
    2023-07-09
    面试 spring npm
  • PHP IDE 中集成大数据接口开发工具的探索与实践
    PHP是一种广泛应用于web开发的编程语言,它具有高效、易用、灵活等特点,因此在web应用开发中得到了广泛的应用。随着大数据技术的发展,越来越多的web应用需要与大数据进行交互,因此,如何将大数据接口集成到PHP开发中变得尤为重要。本文将探...
    99+
    2023-10-07
    ide 接口 大数据
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作