整合Knife4j生成文档后端接口文档出现404无法找到doc.html | 您所在的位置:网站首页 › whitelabel官网 › 整合Knife4j生成文档后端接口文档出现404无法找到doc.html |
目录 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.83.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显示文档
SpringBoot配置knife4j版的Swagger打开doc.html页面404 Springboot集成knife4j实现风格化API文档 |
CopyRight 2018-2019 实验室设备网 版权所有 |