바쁘신분들을 위한 문제 해결방법
// PathVariable로 받는 변수 뒤에 :.+ 를 붙인다.
@GetMapping(value = "/signUp/email/{email:.+}")
회원가입 기능 중 이메일 중복확인 기능을 추가하였으며
중복확인을 위해서 데이터통신을 위해 ResponseBody를 선언하여
확인 후 존재여부 결과를 보내주는 처리과정을 설계하고 진행했습니다.
하지만 클라이언트에서 이메일 형식의 문자열을 보낼 경우 2가지 상황에서의 문제가 발생했다.
1. produces 설정
@GetMapping(value = "/signUp/email/{email}", produces = MediaType.TEXT_PLAIN_VALUE)
@ResponseBody
public ResponseEntity<String> isExistEmail(@PathVariable("email") String email)
produces는 Accept의 헤더를 참고하는 속성인데.. 개발자도구를 보면 Accept: */* 로 나타나고있었다..
사실 Accept의 헤더라는게 Accept 속성을 의미하는지는 좀 더 알아봐야 한다..
아무튼 해당 메서드를 통해서 호출할 경우 406에러가 지속적으로 발생한다.
2. produces 미설정.
produces 값에 정확하게 어떤 타입을 넣어야 할지에 대한 확신이 없어 우선 produces 속성을 뺀 채로
테스트를 진행해보았습니다.
@GetMapping(value = "/signUp/email/{email}")
@ResponseBody
public ResponseEntity<String> isExistEmail(@PathVariable("email") String email)
이메일 형식의 문자열을 uri로 보내자 dot (.) 이후 문자를 제외한 문자열이 들어왔습니다.
구글링을 해봤지만 지속적으로 해결이 어려워지자 도움글도 써보고 했는데
댓글은 달렸지만 해결이 안돼서 혹시하는 마음에
오늘 구글링을 좀 더 간단하게 해보니까 바로 해결법이 나왔습니다..
아래처럼 URI를 입력하는 공간뒷쪽에 " :.+ " 를 붙여서 설정을 하니 정상적으로 전체 이메일 문자열이 들어왔습니다.
@GetMapping(value = "/signUp/email/{email:.+}")
@ResponseBody
public ResponseEntity<String> isExistEmail(@PathVariable("email") String email) {
'Back-End > Spring' 카테고리의 다른 글
Spring Data JPA 와 Postgresql 연동 (0) | 2021.04.21 |
---|---|
Spring) 게시물 찜하기 기능 구현 - 데이터 전달 (1/2) (0) | 2021.03.30 |
MyBatis) MySQL로 Insert한 데이터의 자동생성된 pk 값 가져오기. (1) | 2021.03.22 |
MyBatis로 DB 칼럼 과 Java Property mapping 방법( XML, Annotation) (0) | 2021.03.22 |
Security OAuth 초기 설정 및 간단 설명 (0) | 2021.03.11 |