본문 바로가기

Spring

검증2 - Validation : HTTP 메시지 컨버터

인프런 김영한님의 스프링 mvc2편을 보고 정리한 글입니다.

무엇을 배웠나요?

참고 @ModelAttribute는 HTTP 요청 파라미터(URL 쿼리 스트링, POST Form)를 다룰 때 사용한다. @RequestBody는 HTTP Body의 데이터를 객체로 변환할 때 사용한다. 주로 API JSON 요청을 다룰 때 사용한다.

  • @RequestBody의 경우 주로 api를 통해 데이터를 주고 받는데 이때 다음과 같은 경우로 나뉜다.
    1. 성공 요청 : 성공
    2. 실패 요청 : JSON을 객체로 생성하는 것 자체가 실패함
    3. 검증 오류 요청 : JSON을 객체로 생성하는 것은 성공했고, 검증에서 실패함
  • 만약 HttpMessageConverter에서 요청 JSON을 도메인 객체로 생성하는데 실패하면 컨트롤러 자체가 호출되지 않고 예외가 발생한다. 이떄 컨트롤러가 호출되지 않기 때문에 Validator도 실행 되지 않는다.
  • @ModelAttribute vs @RequestBody
    • @ModelAttribute 는 객체의 필드단위로 세밀하게 적용이 가능하다.
    • @RequestBody 는 전체 객체 단위로 적용 된다.