网站html源码,wordpress主题36氪,打开网站弹出广告js,wordpress+刷新这篇文章主要讲解了“Spring Boot集成接口管理工具Knife4j怎么用”#xff0c;文中的讲解内容简单清晰#xff0c;易于学习与理解#xff0c;下面请大家跟着小编的思路慢慢深入#xff0c;一起来研究和学习“Spring Boot集成接口管理工具Knife4j怎么用”吧#xff01;
一… 这篇文章主要讲解了“Spring Boot集成接口管理工具Knife4j怎么用”文中的讲解内容简单清晰易于学习与理解下面请大家跟着小编的思路慢慢深入一起来研究和学习“Spring Boot集成接口管理工具Knife4j怎么用”吧
一集成过程
1.创建 Spring Boot 项目 既然要在 Spring Boot 中使用 Knife4j那首先就得创建一个 Spring Boot 项目。由于这个很基础这里不做详情介绍。 2.添加依赖 既然是用 Maven 来管理项目依赖那我们在项目 pom.xml 中引入 Knife4j 的相关依赖包引入代码如下。
dependencygroupIdcom.github.xiaoymin/groupIdartifactIdknife4j-spring-boot-starter/artifactIdversion3.0.3/version
/dependency
3.配置添加 接着在项目中创建一个配置包 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 {Beanpublic 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();}
}
4.编写 Controller 层 接着我们编写一个测试的 controller用于在 Knife4j 中展示用代码如下。
Api(tags 测试模块)
RestController
public class DemoController {ApiImplicitParam(name name, value 姓名, required true)ApiOperation(value 入门程序Hello World)PostMapping(/helloWorld)public ResponseEntityString helloWorld(RequestParam(value name) String name) {return ResponseEntity.ok(Hello World name);}
}
5.启动测试 然后将项目启动起来接着到浏览器中去打开 http://localhost:8080/doc.html就会出现以下的主界面。这里有我们之前在配置类中所设置的一些接口信息此外还对接口进行了统计。因为我们代码中只写了一个 POST 的请求所以这里统计出只有一个 POST 请求。 打开具体接口这里就有我们接口的请求和响应的一些情况说明。 点击左侧 调试 按钮我们就可以在 Knife4j 中测试我们的接口。
二通过yml配置文件 还有一种可以通过yml直接配置配置文件如下
knife4j:enable: true # 开启或禁用 Knife4j 文档功能。true 表示启用false 表示禁用。openapi:title: 标题 # 定义 API 文档的标题可以自定义为 项目 API 文档。description: 描述 # API 文档的简短描述帮助用户了解项目背景。email: # API 维护者的联系邮箱可为空或填入负责人的邮箱地址。concat: cyt # API 文档的联系人名称定义为 cyt可替换为实际联系人名字。url: # 项目文档的链接可以指向官方文档、帮助文档等。version: v1.0 # API 的版本号这里设置为 v4.0可根据项目实际版本调整。license: Apache 2.0 # 使用的开源协议类型这里为 Apache 2.0 协议。license-url: # 开源协议的链接地址指向协议的详细内容。terms-of-service-url: # 服务条款的链接可以引导用户查看服务条款。group:# 定义 API 文档的第一个分组test1:group-name: 管理端 # 组名称为 管理端在 Knife4j 界面中显示。api-rule: package # API 显示规则为按包名筛选和归类。api-rule-resources:- com.example.practicebacke.controller.admin # 此组下的 API 来自于 com.example.practicebacke.controller.admin 包。# 定义 API 文档的第二个分组test2:group-name: 用户端 # 组名称为 用户端在 Knife4j 界面中显示。api-rule: package # API 显示规则为按包名筛选和归类。api-rule-resources:- com.example.practicebacke.controller.user # 此组下的 API 来自于 com.example.practicebacke.controller.user 包。
三踩过的坑 当然如果你按照以上步骤顺利打开了 Knife4j 的文档管理页面那接下来的内容你大可不必了解。但如果你按照上边步骤搭建过程中也出现了问题那不妨看看以下是否有你遇到的 Bug。
1.空指针异常 首先是报空指针异常报错信息如下。 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);}
}
2.请求路径未找到 一山放过一山拦以为翻过了上面的山就能成功了。没想到出师不利这不又遇到了报错请求路径未找到。 当我们成功启动项目后在浏览器中打开 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 {Overridepublic 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怎么用这一问题有了更深刻的体会具体使用情况还需要大家实践验证。