[@ModelAttribute]
@PostMapping
public ResponseEntity<String> createPost(@ModelAttrubute RequestDto requestDto){
}
[@RequestBody]
@PostMapping
public ResponseEntity<String> createPost(@RequestBody RequestDto requestDto){
}
@RequestBody
- JSON(application/json) 형태의 HTTP Body를 java 객체로 변환 시켜주는 역할을 한다.
@ModelAttribute
requestDto에 setter이 없다면 데이터 바인딩이 제대로 이루어지지 않고 null값이 넘어가게 됩니다.
데이터 바인딩 작업과 함께 더불어서 값 검증의 역할을 하는 것이 @ModelAttribute고 setter이 없더라도 적절한 생성자가 있다면 그것을 통해서 객체를 생성하기도 하는 것 같다.
중요한 점은!
Field error in object 'member' on field 'id': rejected value [null]; codes [NotBlank.member.id,NotBlank.id,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [member.id,id]; arguments []; default message [id]]; default message [공백과 빈값은 허용하지 않습니다. 올바르게 입력해주세요.]
Field error in object 'member' on field 'phoneNumber': rejected value [null]; codes [NotBlank.member.phoneNumber,NotBlank.phoneNumber,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [member.phoneNumber,phoneNumber]; arguments []; default message [phoneNumber]]; default message [공백과 빈값은 허용하지 않습니다. 올바르게 입력해주세요.]
Field error in object 'member' on field 'gender': rejected value [null]; codes [NotBlank.member.gender,NotBlank.gender,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [member.gender,gender]; arguments []; default message [gender]]; default message [공백과 빈값은 허용하지 않습니다. 올바르게 입력해주세요.]
Field error in object 'member' on field 'birthday': rejected value [null]; codes [NotBlank.member.birthday,NotBlank.birthday,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [member.birthday,birthday]; arguments []; default message [birthday]]; default message [공백과 빈값은 허용하지 않습니다. 올바르게 입력해주세요.]
Field error in object 'member' on field 'nickname': rejected value [null]; codes [NotBlank.member.nickname,NotBlank.nickname,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [member.nickname,nickname]; arguments []; default message [nickname]]; default message [공백과 빈값은 허용하지 않습니다. 올바르게 입력해주세요.]
Field error in object 'member' on field 'password': rejected value [null]; codes [NotBlank.member.password,NotBlank.password,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [member.password,password]; arguments []; default message [password]]; default message [공백일 수 없습니다]
Field error in object 'member' on field 'name': rejected value [null]; codes [NotBlank.member.name,NotBlank.name,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [member.name,name]; arguments []; default message [name]]; default message [공백과 빈값은 허용하지 않습니다. 올바르게 입력해주세요.]
Field error in object 'member' on field 'emailAddress': rejected value [null]; codes [NotBlank.member.emailAddress,NotBlank.emailAddress,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [member.emailAddress,emailAddress]; arguments []; default message [emailAddress]]; default message [공백과 빈값은 허용하지 않습니다. 올바르게 입력해주세요.]
비밀번호를 평문 저장하지 않기 위해 encode 작업 후의 API server측의 entity valid를 위배하는 경우?
이때 발생할 수 있는 가벼운 예시로 Front에서 비밀번호를 encode하는 작업에 글자수가 늘어나고 이를 API server에서 비밀번호 필드를 @size()로 사이즈 제한을 했다 이때 이 수를 넘어서 회원가입이 실패하는 검증 문제가 발생했다. 이를 해결하고자 entity의 비밀번호 필드의 @size()부분을 삭제해주어 잘 가입되는 것을 확인했다.