整合Knife4j生成文档后端接口文档出现404无法找到doc.html 您所在的位置:网站首页 whitelabel官网 整合Knife4j生成文档后端接口文档出现404无法找到doc.html

整合Knife4j生成文档后端接口文档出现404无法找到doc.html

2023-09-23 20:57| 来源: 网络整理| 查看: 265

目录

1、使用场景

2、错误原因解析

3、Knife4jorSwaggerUI配置

4、呈现效果或者swagger-ui与knife4j可以切换

5、参考文章

1、使用场景

        最近自己在总结搭建一个统一数据后端的基础框架,在整合knife4j的时候出现了无法找到doc.html页面的问题。其中目前网上解决方案都是统一的一种模式,

在应用启动里面实现(implements WebMvcConfigurer)。

2、错误原因解析

        因为我使用的 继承(extends WebMvcConfigurationSupport),新旧版本SpringBoot配置文件 WebMvcConfigurationSupport类 和 WebMvcConfigurer接口之间有冲突。

因为我写了一个返回后端数据统一注解ResponseResult,需要在WebMvcConfigurer/WebMvcConfigurationSupport 注入拦截器。同时考虑到不破坏启动之中类干净

显示内容,于是想到自己定义一个@Configuration类WebAppMvcConfig,去实现WebMvcConfigurer,这样就能够解决我响应结果拦截器ResponseResultInterceptor的注入,

同时比较友好的加入Knife4j的doc.html,以及swagger-ui.html页面友好显示。同时也解决了Knife4j显示404的问题。具体类如下所示:

import cn.hutool.core.date.DatePattern; import com.whdcmap.common.response.ResponseResultInterceptor; import org.springframework.context.annotation.Configuration; import org.springframework.format.FormatterRegistry; import org.springframework.format.datetime.standard.DateTimeFormatterRegistrar; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import java.time.format.DateTimeFormatter; /** * @Description TODO * @Classname Knife4jWebMvcConfig * @Date 2021/3/2 15:27 * @Created by jianxiapc */ @Configuration public class WebAppMvcConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { /** * 注册自定义的显示 ResponseResult 注解的拦截器 */ registry.addInterceptor(new ResponseResultInterceptor()) // 拦截配置 .addPathPatterns("/**") // 排除配置 .excludePathPatterns("/error", "/login**"); } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/**").addResourceLocations("classpath:/static/"); /** 配置knife4j 显示文档 */ registry.addResourceHandler("doc.html") .addResourceLocations("classpath:/META-INF/resources/"); /** * 配置swagger-ui显示文档 */ registry.addResourceHandler("swagger-ui.html") .addResourceLocations("classpath:/META-INF/resources/"); /** 公共部分内容 */ registry.addResourceHandler("/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/"); } } 3、Knife4jorSwaggerUI配置

   3.1、需要引入swagger和Knife4j基本jar包如下所示

io.springfox springfox-swagger2 2.9.2 io.springfox springfox-swagger-ui 2.9.2 com.github.xiaoymin knife4j-spring-boot-starter 2.0.8

3.2、配置knife4j或者swaggerui基本配置信息

注意事项:一下代码如果自己的简单功能直接书写相关controller扫描包即可,我这边主要扫描注解了RestController相关类

//这里指定Controller扫描包路径 .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))

示例:

//这里指定Controller扫描包路径(项目路径也行) .apis(RequestHandlerSelectors.basePackage("com.example.knife4j.demo") import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.bind.annotation.RestController; 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; import springfox.documentation.swagger2.annotations.EnableSwagger2; @EnableSwagger2 @EnableKnife4j @Configuration public class Knife4jOrSwagger2Config { @Bean(value = "defaultApi2") public Docket defaultApi2() { Docket docket=new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) //分组名称 .groupName("测试分组") .select() //这里指定Controller扫描包路径 .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class)) .paths(PathSelectors.any()) .build(); return docket; } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("Spring Boot Knife4j or swagger-bootstrap-ui API V1.0") .description("swagger-bootstrap-ui-demo RESTful APIs") .version("1.0") .build(); } } 4、呈现效果或者swagger-ui与knife4j可以切换

4.1、Knife4j显示文档

4.2、Swagger-ui显示文档

5、参考文章

SpringBoot配置knife4j版的Swagger打开doc.html页面404

Springboot集成knife4j实现风格化API文档



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有