Spring RestController 에서 @PathVariable에 특수문자 포함 허용하기.
30 Sep 2019 | Spring Spring boot PathVariable 특수문자 . dotSpring RestController @PathVariable 사용하여 값을 넘겨받을 때 값에 “.” 나 특수문자가 포함되어 있으면 해당 문자를 포함하여 뒤 문자열이 전부 잘려서 들어온다.
문자가 잘리는 예시
1. 요청 URL
GET http://localhost:8080/test/jmlim@2ss@aa.ddd
2. 로직
@Slf4j
@RestController
public class TestController {
@GetMapping("/test/{path}")
public String notAllowSpecialCharacters(@PathVariable String path) {
log.info(path);
return path;
}
}
3. 반환값
jmlim
특수문자포함 이후 문자열은 출력되지 않았다.
이걸 아래와 같이 바꿔주면 특수문자까지 포함하여 사용할 수 있다.
1. 특수문자 포함하여 출력
@Slf4j
@RestController
public class TestController {
@GetMapping("/test/{path:.+}")
public String allowSpecialCharacters(@PathVariable String path) {
log.info(path);
return path;
}
@GetMapping("/test/{path}")
public String notAllowSpecialCharacters(@PathVariable String path) {
log.info(path);
return path;
}
}
2. 반환값
jmlim@2ss@aa.ddd
특수문자까지 포함되어 출력되었음을 확인하였다.
참고자료 :
- https://winmargo.tistory.com/202
- https://stackoverflow.com/questions/16332092/spring-mvc-pathvariable-with-dot-is-getting-truncated
- https://javamin.tistory.com/350
Comments