댓글 기능을 개발하다가 DTO에 자꾸 Null이 넘어와서 댓글 등록이나 수정이 안되는 이슈가 발생했다.
@PreAuthorize("hasRole('ROLE_USER')")
@PatchMapping("/{ctId}")
public ApiResult<?> update(@PathVariable("ctId") Long ctId, @LoginUser CustomUserDetails customUserDetails, @RequestBody UpdateCommentRequest request) {
commentService.updateComment(ctId, customUserDetails.getUserId(), request);
return success();
}
LoginUser 어노테이션을 추가하고 테스트하다 생긴 문제라 혹시 그게 문제인가 하면서 코드를 뜯어봤는데 그건 또 아니었다..
그래서 DTO에 Null만 넘어오는 경우에 대해 여러가지 글을 찾아봤는데 대부분의 글이 필드명의 첫글자가 대문자인 경우였다.
나는 필드명을 소문자로만 정해서 해당하지 않았다,,
열심히 구글링을 해본 결과 약간,, 허무한 이유였다.
@LoginUser가 추가되면서 Request body에서 값들을 넘겨주는 방식이 달랐던 것이었다.
{
"customUserDetails": {
"userId": 0,
"userRoleList": [
"ROLE_MASTER"
],
"authorityList": [
{
"authority": "string"
}
],
"userEmail": "string",
"userPhoneNumber": "string",
"enabled": true,
"accountNonExpired": true,
"credentialsNonExpired": true,
"accountNonLocked": true,
"password": "string",
"authorities": [
{
"authority": "string"
}
],
"username": "string",
"master": true
},
"request": {
"content": "댓글 달기"
}
}
Request body에서 이렇게 값을 넘겨주고 있었는데
{
"content" : "댓글 달기"
}
그냥 이렇게만 넘겨주면 되는 것이었다,,
코드를 아무리 뜯어봐도 뭐가 잘못됐는지 모르겠어서 머리 아팠는데 테스트 하면서 넘겨준 방식 때문이었다니..!
그래도 해결해서 다행이다.
혹시 나랑 똑같은 이유로 헤매고 있는 사람들에게 도움이 되었으면,, 망망~!
'학습' 카테고리의 다른 글
ChatGPT 사용하기 (0) | 2023.09.20 |
---|---|
Invalid character found in the request target 에러 해결하기 (0) | 2023.09.08 |
SQLD 자격증 따기5 - 관리 구문 및 후기 (0) | 2023.07.13 |
SQLD 자격증 따기4 - SQL 활용 (0) | 2023.07.12 |
SQLD 자격증 따기3 - SQL 기본 (0) | 2023.07.10 |