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가 적용되지 않게 된다.
반응형