IT 개발/Spring

WebConfig에 설정된 경로 중 일부 API 예외처리

쵸비냥냥 2023. 12. 1. 14:33
반응형

현재 운영되고 있는 서비스 개선을 위해, 외부에서 호출하는 API 를 추가로 개발하게 되었다.

근데, 문제가 발생했다.   

뭐 설정한것도 없는데   

 

읭?   

 

'로그인이 필요한 서비스입니다' 라고?

난 그 설정을 추가한것도 로그인을 해야하는 API도 아닌데?   

 

원인은 WebConfig 클래스에서 발견되었는데, 해당 클래스에는
"/api/v1/healthcheck/**" 경로가 SessionUserInterceptor에 적용되어 있었다.   

 

내가 작성한 API 경로는 "/healthcheck/user/delHealth"도
"/api/v1/healthcheck/**"에 포함되어 있어서 SessionUserInterceptor를 피할 수 없는 상황이었다.   

 


private static final String[] SESSION_API_PATH = {
"/api/v1/user/**",
"/api/v1/healthcheck/**",
.
.
};

@Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new SessionUserInterceptor(objectMappingUtil))
                // NOTE : 경로추가를 하지 않을 경우 전체 경로에 적용된다
                .addPathPatterns(SESSION_API_PATH);
    }

.
.
.

   

하지만 이미 명세서를 만들어서 외부에 전달한 상황이라 예외 경로로 추가하기로 결정했다.
이를 위해 WebConfig 클래스에 코드 한 줄을 추가하여 문제를 해결!

아래는 수정된 코드이다.   

 

@Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new SessionUserInterceptor(objectMappingUtil))
                // NOTE : 경로추가를 하지 않을 경우 전체 경로에 적용된다
                .addPathPatterns(SESSION_API_PATH);
                .excludePathPatterns("/api/v1/healthcheck/user/delHealth");
    }   

   

이렇게 수정하면 "/api/v1/healthcheck/user/delHealth" 경로는 SessionUserInterceptor가 적용되지 않게 된다.

반응형