TIL(20210811) - @Pathvariable에 '/' (슬래쉬) 가 넘어오는 경우

joshuara7235·2021년 8월 11일
1

📖 TIL

목록 보기
1/8
post-thumbnail

🌱 서론

  • 지난 포스팅에서 시리즈로 연재했던 Category만들기 에서 언급했던 템플릿 프로젝트에서 발생한 이슈를 처리하던 중, @pathvariable'/' (통칭 슬래시) 값이 들어오는 경우가 생겼다.

  • '패션잡화/의류' 라는 값을 넘겨 받게 되었는데, 이 예외가 처음에는 한글 인코딩 문제인줄 알았다.
    그런데 한글 인코딩 문제가 아니라, '/' 요놈의 슬래시가 문제였다.

  • 구글링을 하면 구글 선생님들이 여러가지 방법을 써 놓으셨다.
    query parameter로 받는다거나, spring config를 통해 설정을 바꾼다거나...
    - query parameter로 받게 되면 요구 스펙이 달라져서 패스..
    - spring config를 건들게 되면 앞으로 다른 문제가 생길 수도 있으므로 패스..

  • 자, 그럼 어떻게 해결하면 좋을까? 🤔

💡 생각의 전환

  • '/' 이놈의 슬래시가 문제라면, 인식이 되는 다른 문자로 바꿔서 넣어보자!
public String escapeCode(String string) {
	return string != null ? string.replace("/", "-") : null;
}
  • 배경을 좀 설명하자면, 우리 DBinsert 되는 데이터 필드중에 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();
    }
  • 위의 코드를 보면 codeoptional을 주어 null이라면 name값이 저장이 되고, 이것을 escapeCode라는 메소드를 사용하여 / 값이 있을 경우 -로 대체하게 하였다.
profile
인문학 하는 개발자 💻

0개의 댓글