前言
knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案。
一、maven 依赖
<!--接口文档-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.7</version>
</dependency>
二、配置
package com.cyq.dascma.configuration;
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.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* knife4j 配置类
* dingwen
* 2021/3/9 17:43
**/
@Configuration
@EnableSwagger2WebMvc
@EnableKnife4j // 解决访问404问题。无需配置WebMvcConfigurer
public class Knife4jConfiguration {
@Bean(value = "defaultApi2")
public Docket defaultApi2() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(new ApiInfoBuilder()
.title("接口文档- daily score management")
.description("# daily-score-management APIs")
.termsOfServiceUrl("http://192.168.0.117:9999/daily_score_management/student/list")
.contact(new Contact("xxxx", "www.dingwen.com", "xxx@qq.com"))
.version("v1.0")
.build())
//忽略生成主键的参数类型
.ignoredParameterTypes(
HttpSession.class,
HttpServletResponse.class,
HttpServletRequest.class
)
//分组名称
.groupName("1.0版本")
.select()
//这里指定Controller扫描包路径
.apis(RequestHandlerSelectors.basePackage("com.cyq.dascma.controller"))
.paths(PathSelectors.any())
.build();
}
}
三、遇到问题
1.ignoredParameterTypes
忽略某些生成Key的参数类型
.ignoredParameterTypes(
HttpSession.class,
HttpServletResponse.class,
HttpServletRequest.class
)
没有设置,当你的请求参数中有,HttpSession等时,会出现一下情况
设置后
2.访问 doc.html 404
编写WebMvcConfigurer 类添加静态资源映射
package com.cyq.dascma.configuration;
import com.cyq.dascma.interceptor.LoginInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.*;
/**
* 全局拦截器
* 登录
* 跨域
* dingwen
* 2021/4/3 21:41
**/
@Configuration
public class WebConfigurer implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}