Spring,SpringBoot

@ModelAttribute 와 @RequestBody

Lahezy 2023. 2. 15.
728x90

@RequestBody ( Http 바디 정보를 편리하게 조회:  주로 API JSON에서 사용한다. )

  • 클라이언트가 보내는 HTTP의 바디 메세지(json)을 Java 객체로 변환해준다. 
    (이때 HttpMessageConverter을 이용하여 타입에 맞게 변화한다.)
  • 각각의 필드 단위로 적용하는 것이 아니라 전체 객체 단위로 적용된다.
  • 헤더 정보가 필요하면 HttpEntity를 사용하거나, @RequestHeader을 사용한다.
@PostMapping("/api/user-add")
public long makeUser(@RequestBody UserMakeDto userMakeDto) {
    Member member = Member.makeUser(userMakeDto.getLoginId(), userMakeDto.getName(), userMakeDto.getNickname(), userMakeDto.getPassword());
    Long userId = memberService.join(member);
    return userId;
}

 

@ModelAttribute ( 요청 파라미터를 조회 : 주로 URL 쿼리 스트링, Form에서 건너온 데이터를 처리할때)

  • 클라이언트가 보내는 HTTP 요청 파라미터를 Java 오브젝트로 바인딩(매핑)하여 처리한다.
  • 각각의 필드 단위로 세밀하게 적용, 특정 필드에 타입이 맞지 않는 오류여도 나머지 필드는 정상 처리가 가능하다.
@PostMapping("/api/user-add")
public long makeUser(@ModelAttribute UserMakeForm form) {
    Member member = Member.makeUser(userMakeDto.getLoginId(), userMakeDto.getName(), userMakeDto.getNickname(), userMakeDto.getPassword());
    Long userId = memberService.join(member);
    return userId;
}

 

@RequestParam( 요청 파라미터를 조회 : 파라미터 이름으로 바인딩 한다.)

  •  기본 설정이 true 이기 때문에 만약 반드시 입력해야하는 경우가 아니라면 required=false로 설정해야한다.
@GetMapping("/checkUserId")
public User checkIdGet(@RequestParam(required = true) String id){
    if(userRepository.findById(id)!=null){
        User user = userRepository.findById(id);
        return user;
    }
    else
        return null;
}

 

 

⭐️ 참고 ⭐️

https://mangkyu.tistory.com/72

스프링 MVC 1,2 - 백엔드 웹 개발 활용 기술

728x90

댓글