
지난 포스팅에서 시리즈로 연재했던 Category만들기 에서 언급했던 템플릿 프로젝트에서 발생한 이슈를 처리하던 중, @pathvariable에 '/' (통칭 슬래시) 값이 들어오는 경우가 생겼다.
'패션잡화/의류' 라는 값을 넘겨 받게 되었는데, 이 예외가 처음에는 한글 인코딩 문제인줄 알았다.
그런데 한글 인코딩 문제가 아니라, '/' 요놈의 슬래시가 문제였다.
구글링을 하면 구글 선생님들이 여러가지 방법을 써 놓으셨다.
query parameter로 받는다거나, spring config를 통해 설정을 바꾼다거나...
- query parameter로 받게 되면 요구 스펙이 달라져서 패스..
- spring config를 건들게 되면 앞으로 다른 문제가 생길 수도 있으므로 패스..
자, 그럼 어떻게 해결하면 좋을까? 🤔
'/' 이놈의 슬래시가 문제라면, 인식이 되는 다른 문자로 바꿔서 넣어보자!public String escapeCode(String string) { return string != null ? string.replace("/", "-") : null; }
DB에 insert 되는 데이터 필드중에 code라는 값이 있는데, 어떤 데이터는 이 code가 없는 경우가 있다. 그래서 code 가 없을 경우에 즉, null 인 경우에 name이라는 필드를 대체하여 넣도록 하였다. public Category toEntity() { isEmpty(branch); return Category.builder() .branch(branch) .code(escapeCode(Optional.ofNullable(code).orElse(name))) .categoryName(name) .categoryHref(href) .level(level) .build(); }
code에 optional을 주어 null이라면 name값이 저장이 되고, 이것을 escapeCode라는 메소드를 사용하여 / 값이 있을 경우 -로 대체하게 하였다.