Spring MVC/04.Rest

[swagger]swagger와 interceptor

  • -

Interceptor와 swagger를 같이 사용하다 보면 필요한 경로를 효율적으로 exclude 시키지 못해서 아래와 같은 오류를 보게 된다.

이번 포스트에서는 위 오류를 처리하기 위해서 exclude 해줘야 하는 경로들을 정리해 보자.

interceptor에서 swagger 제외하기

 

Interceptor의 경로 표현과 ant 표현식

Interceptor를 설정할 때는 적용할 경로 패턴(addPathPattern)과 적용된 것 중 제외할 경로(excludePathPattern)이 필요하다. 경로 패턴을 적용할 때 둘 다 ant 표현식을 사용할 수 있다.

ant 표현식은 웹에서 자주 사용되기 때문에 한번 잘 정리해두고 가자.

  • ? : 1개의 문자와 매칭
  • * : 0개 이상의 문자와 매칭, 주로 하나의 폴더에 있는 모든 파일을 나타낼 때 사용
  • **: 0개 이상의 파일과 디렉토리 매칭, 현재 경로의 모든 파일은 물론 하위 경로의 파일까지 적용

표현식이 어렵지는 않기 때문에 바로 Interceptor에 적용하는 예를 살펴보자.

Swagger를 위한 exclude path pattern

swagger를 사용하기 위해서 필요한 경로는 생각보다 여러가지이다. 아래 코드처럼 /v2/api-docs와 /swagger-ui/** , /swagger-resources/** 3개를 exclude 해줘야 한다.

public class ApsHelperApplication implements WebMvcConfigurer {
	@Autowired
	LoginInterceptor loginInterceptor;

	@Override
	public void addInterceptors(InterceptorRegistry registry) {
		registry.addInterceptor(loginInterceptor)
				.addPathPatterns("/**")
				.excludePathPatterns(
						"/swagger-resources/**",
						"/swagger-ui/**",
						"/v2/api-docs");
	}
}

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.