내일배움캠프 개인 과제를 진행하다가
게시글 삭제 기능을 구현할 때 비밀번호를 검증하기 위해서
@RequestBody를 통해 password를 받으려 했다.
그러나 내가 생각한 대로 String 타입으로 받아지는 게 아니라 JSON 형태 그대로 왔다.
그래서 비밀번호 검증에 계속 실패했다.
구글 검색을 통해 알아보니 @RequestBody는 스프링에게 데이터를 도메인 객체로 역 직렬화하라고 알려준다고 한다.
스프링에서는 객체로 받게되면 내부 구현체 중 하나가 Getter 또는 Setter를 통해 역 직렬화해주고
(무조건 Getter 또는 Setter가 있어야 한다.)
그렇지 않으면 Map을 통해서 해준다는 것을 알게 되었다.
그래서 활용하기 위해서는 Class를 만들어서 그 안에 필드로 넣어줘서 들어오게끔 하든,
Map을 통해 역 직렬화 된 것을 받아서 .get(Key)를 통해 받아오면 된다는 것을 알았다.
나는 password하나만 받을 생각이었기에 Map을 통해 역 직렬화를 해서 password를 받아왔다
근데 잘 생각해 보니 강의에서 들었던 것 같다. 아무래도 강의를 복습해야 할 것 같다.
Getter 또는 Setter가 열려있는 클래스를 통해 받아온다
-> 필드의 이름과 들어오는 데이터의 이름이 같아야 함
Map<String, T>를 통해 받아오고 .get(Key)를 통해 받는다.
Junit5 테스트하다가 expecting code to raise a throwable.라는 에러를 겪었다.
검색을 해보니 assertThatThrownBy() 코드에서 에러가 나지 않아서 발생한 것이었다.
비밀번호 검증 실패를 하게 하려고 했는데 값을 비밀번호가 맞는 값을 넣어서 생긴 문제였었다.
단순한 실수였다.