과제를 하면서 만난 문제 (@RequestBody 역직렬화)

GyungKu·2023년 11월 3일
0

2023.11.03

오늘 만난 첫 문제

내일배움캠프 개인 과제를 진행하다가
게시글 삭제 기능을 구현할 때 비밀번호를 검증하기 위해서
@RequestBody를 통해 password를 받으려 했다.
그러나 내가 생각한 대로 String 타입으로 받아지는 게 아니라 JSON 형태 그대로 왔다.
그래서 비밀번호 검증에 계속 실패했다.

구글 검색을 통해 알아보니 @RequestBody는 스프링에게 데이터를 도메인 객체로 역 직렬화하라고 알려준다고 한다.

스프링에서는 객체로 받게되면 내부 구현체 중 하나가 Getter 또는 Setter를 통해 역 직렬화해주고
(무조건 Getter 또는 Setter가 있어야 한다.)
그렇지 않으면 Map을 통해서 해준다는 것을 알게 되었다.

그래서 활용하기 위해서는 Class를 만들어서 그 안에 필드로 넣어줘서 들어오게끔 하든,
Map을 통해 역 직렬화 된 것을 받아서 .get(Key)를 통해 받아오면 된다는 것을 알았다.

나는 password하나만 받을 생각이었기에 Map을 통해 역 직렬화를 해서 password를 받아왔다
근데 잘 생각해 보니 강의에서 들었던 것 같다. 아무래도 강의를 복습해야 할 것 같다.

@RequestBody를 통해 데이터를 받을 때는

  1. Getter 또는 Setter가 열려있는 클래스를 통해 받아온다
    -> 필드의 이름과 들어오는 데이터의 이름이 같아야 함

  2. Map<String, T>를 통해 받아오고 .get(Key)를 통해 받는다.

오늘 겪은 두 번째 문제

Junit5 테스트하다가 expecting code to raise a throwable.라는 에러를 겪었다.
검색을 해보니 assertThatThrownBy() 코드에서 에러가 나지 않아서 발생한 것이었다.
비밀번호 검증 실패를 하게 하려고 했는데 값을 비밀번호가 맞는 값을 넣어서 생긴 문제였었다.
단순한 실수였다.

0개의 댓글

관련 채용 정보