[spring] PathVariable사용시 슬래시(/) 처리

나길진·2024년 1월 23일

spring boot에서 과제를 진행하던 와중에 pathVariable에 /가 포함된 값을 파라미터로 받았어야 했다.

하지만 /는 url 작성시에 구분자로 사용되기 때문에 원하는대로 작동이 안될것임을 짐작했었다.

Springboot에서는 기본적으로 /가 포함된 경우 다음과 같은 정책을 적용한다.

  • Encoding된 Slash가 포함되었다 하더라도, 이를 Decode해서 변수 자체를 세부 Path로 구분해버린다.
  • 중복된 Slash가 존재하면 이를 합쳐서 하나의 Slash로 만들어버린다.

해결방법

spring boot 3.x 이상 버전에서의 해결법

@Component
public class EmbeddedTomcatServerCustomizer implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {
    @Override
    public void customize(TomcatServletWebServerFactory factory) {
        factory.getTomcatConnectorCustomizers()
                .add(connector -> connector.setEncodedSolidusHandling("decode"));
    }
}

나머지는 해당 링크에서 참고하면 될듯 하다.


참고사이트

profile
백엔드 개발자

0개의 댓글