返回顶部
首页 > 资讯 > 精选 >Spring Boot集成接口管理工具Knife4j怎么用
  • 720
分享到

Spring Boot集成接口管理工具Knife4j怎么用

2023-06-30 15:06:39 720人浏览 安东尼
摘要

这篇文章主要讲解了“spring Boot集成接口管理工具Knife4j怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring Boot集成接口管理工具Knif

这篇文章主要讲解了“spring Boot集成接口管理工具Knife4j怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“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@EnableKnife4jpublic 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 = "测试模块")@RestControllerpublic 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@SpringBootApplicationpublic 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 过滤掉即可。

@Configurationpublic 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 文档管理页面了。

感谢各位的阅读,以上就是“Spring Boot集成接口管理工具Knife4j怎么用”的内容了,经过本文的学习后,相信大家对Spring Boot集成接口管理工具Knife4j怎么用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

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

本文链接: https://lsjlt.com/news/329940.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怎么集成PageHelper使用
    这篇文章主要介绍了Spring Boot怎么集成PageHelper使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring Boot怎么集成PageHelper使用文章都会有所收获,...
    99+
    2023-06-30
  • WEB接口管理工具RAP有什么用
    这篇文章主要介绍了WEB接口管理工具RAP有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 RAP是一个...
    99+
    2024-04-02
  • SpringBoot整合接口管理工具Swagger怎么使用
    这篇“SpringBoot整合接口管理工具Swagger怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringB...
    99+
    2023-07-06
  • spring boot动态生成接口怎么实现
    本篇内容主要讲解“spring boot动态生成接口怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“spring boot动态生成接口怎么实现”吧!在某些业务场景中,我...
    99+
    2023-06-21
  • 利用spring-boot怎么允许接口跨域
    今天就跟大家聊聊有关利用spring-boot怎么允许接口跨域,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。pom.xml(依赖的jar)// 在spring-boot-starte...
    99+
    2023-05-31
    springboot 跨域
  • Spring Boot怎么利用拦截器加缓存完成接口防刷
    小编给大家分享一下Spring Boot怎么利用拦截器加缓存完成接口防刷,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!为什么需要接口防刷为了减缓服务器压...
    99+
    2023-06-29
  • linux管理工具怎么使用
    本篇内容主要讲解“linux管理工具怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux管理工具怎么使用”吧!linux管理工具有:1、htop,一款监控与进程管理软件;2、dsta...
    99+
    2023-06-30
  • 怎么使用Spring Boot集成ShedLock分布式定时任务
    这篇文章给大家分享的是有关怎么使用Spring Boot集成ShedLock分布式定时任务的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、ShedLock是什么?以下是ShedLock锁提供者,通过外部存储实现...
    99+
    2023-06-15
  • 怎么利用ApiPost接口管理工具校验/测试接口返回结果是否符合预期?
    本文主要讲解接口管理工具ApiPost的预执行脚本和后执行脚本里,怎么校验/测试接口返回结果是否符合预期? ApiPost简介: ApiPost是一个支持团队协作,并可直接生成文档的API调试、管理工具。它支持模拟POST、GET、PUT等...
    99+
    2018-07-25
    怎么利用ApiPost接口管理工具校验/测试接口返回结果是否符合预期?
  • systemd进程管理工具怎么用
    systemd进程管理工具怎么用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 1. systemd介绍systemd是目前Linux系统上主要的系统...
    99+
    2023-06-15
  • Node.js包管理工具怎么使用
    这篇文章主要介绍“Node.js包管理工具怎么使用”,在日常操作中,相信很多人在Node.js包管理工具怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Node.js包管理工具怎么使用”的疑惑有所帮助!...
    99+
    2023-07-06
  • SpringBoot下集成缓存工具类CacheManager怎么使用
    这篇文章主要介绍了SpringBoot下集成缓存工具类CacheManager怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot下集成缓存工具类CacheManager怎么使用文章都会有...
    99+
    2023-07-05
  • 数据库管理工具Navicat怎么用
    这篇文章主要为大家展示了“数据库管理工具Navicat怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“数据库管理工具Navicat怎么用”这篇文章吧。一、N...
    99+
    2024-04-02
  • Bing网站管理员工具怎么用
    这篇文章给大家分享的是有关Bing网站管理员工具怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、验证过程要使用Bing网站管理员工具,首先需要验证你拥有网站管理权限。有两个验证方法,按照Bing要求在网站...
    99+
    2023-06-13
  • C++内存管理工具primitives怎么用
    本篇内容主要讲解“C++内存管理工具primitives怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++内存管理工具primitives怎么用”吧!primitives分配释放属于是否...
    99+
    2023-07-02
  • python进程管理工具怎么使用
    Python进程管理工具可以通过多种方式使用,以下是一些常见的用法示例:1. 使用`os`模块创建新的进程:```pythonimp...
    99+
    2023-10-12
    python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作