通俗易懂的Web前端培訓資料
阿新 • • 發佈:2021-01-10
技術標籤:java
spring-boot中filter配置,放行swagger。
swagger配置:
1.匯入swagger2依賴:
<!--swagger依賴-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
< /dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!--解決swagger2版本大於2.7的相容性問題-->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>20.0</version>
</dependency>
2.配置swagger2:
package com.my.emplogin.swagger2;
import io.swagger.annotations.Api;
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;
/**
* @author : tanghuai
* @date : 2021/1/8 14:41
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
//是否開啟 (true 開啟 false隱藏。生產環境建議隱藏)
//.enable(false)
.select()
//掃描的路徑包,設定basePackage會將包下的所有被@Api標記類的所有方法作為api
.apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
//指定路徑處理PathSelectors.any()代表所有的路徑
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
//設定文件標題(API名稱)
.title("登入案列")
//文件描述
.description("介面說明")
.contact(new Contact("tangsir","https://www.baidu.com","[email protected]"))
//服務條款URL
.termsOfServiceUrl("http://localhost:8080/")
//版本號
.version("1.0.0")
.build();
}
}
3 配置過濾器
package com.my.emplogin.fiter;
import org.springframework.stereotype.Component;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* 過濾器
* @author : tanghuai
* @date : 2021/1/11 14:01
*/
@Component
@WebFilter(value = "MyFilter",urlPatterns = "/*")
public class MyFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
// 獲取請求路徑
String uriPath = request.getRequestURI();
// 放行驗證碼 和 swagger文件
if (uriPath.contains("/getVerify") || uriPath.contains("/api-docs") || uriPath.contains("swagger")){
filterChain.doFilter(request,response);
return;
}
}
}
其中urlPatterns,是配置過濾路徑,要放行swagger,我這裡在doFilter裡面配置了兩個放行路徑,"/api-docs",“swagger”。