지난 포스팅에서 시리즈로 연재했던 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
라는 메소드를 사용하여 /
값이 있을 경우 -
로 대체하게 하였다.