Published 2021. 10. 13. 14:30
728x90
🚨 이슈 발생
/**
* 회원가입 API
* [POST] /users
* @return BaseResponse<PostUserRes>
*/
@ResponseBody
@PostMapping("")
public BaseResponse<TestPostUserRes> createUser(@RequestBody TestPostUserReq testpostUserReq) {
//닉네임 입력을 안했을 때
if(testpostUserReq.getUserNickname() == null){
return new BaseResponse<>(POST_USERS_EMPTY_NICKNAME);
}
try{
TestPostUserRes postUserRes = userService.createUser(testpostUserReq);
return new BaseResponse<>(postUserRes);
} catch(BaseException exception){
return new BaseResponse<>((exception.getStatus()));
}
}
회원가입 API작성 시 Controller에서 분명히 Validation처리 (닉네임을 입력하지 않을 경우 POST_USERS_EMPTY_NICKNAME 에러 코드를 발생시키기)가 작동하지 않고 공백으로 그대로 DB에 저장되는 이슈가 발생하였다.
의도대로라면
if문이 작동하여 POST_USERS_EMPTY_NICKNAME이 발동되어야 하는데 그렇지 못한 이슈인 것이다.
👌 이슈 해결
문제는 POST를 하는 방식에서 있었다.
나는 기존에 닉네임을 입력하지 않는 경우를
{
"userNickname" : "",
"userEmail" : "nick123@naver.com",
"userPassword" : "!1234",
"status" : "Active",
"ID" : "123"
}
다음과 같이 Value 부분에 아무것도 넣지 않고 POST 하는 방식으로 처리하려 했다.
하지만 Validation이 작동하기 위해서는
{
"userEmail" : "nick123@naver.com",
"userPassword" : "!1234",
"status" : "Active",
"ID" : "123"
}
다음과 같이 Key와 Value 모두 없애고 POST를 해야 정상적으로 Validation이 작동하는 것을 확인할 수 있었다.
정상작동 확인