Backend/spring

[spring] @RequestParam @RequestBody 차이점

dddzr 2023. 5. 25. 17:00

@RequestParam과 @RequestBody는 Spring Framework에서 요청 파라미터를 받는 데 사용되는 어노테이션입니다. 


@RequestParam

  • 사용법: @RequestParam("paramName")
  • 역할: URL 매개변수를 받아올 때 사용합니다. 예를 들어, ?paramName=value 형태의 URL 매개변수에서 paramName에 해당하는 값을 받아올 수 있습니다.
  • 기본적으로는 요청의 쿼리스트링(또는 폼 데이터)에서 해당 매개변수를 찾아 값을 바인딩합니다.
    required 옵션을 사용하여 필수 매개변수 여부를 지정할 수 있습니다.
  • 기본적으로는 단일 값을 받지만, List나 배열을 사용하여 여러 값을 받을 수도 있습니다.


@RequestBody

  • 사용법: @RequestBody
  • 역할: 요청 본문의 데이터를 받아올 때 사용합니다. 주로 JSON 형태의 데이터를 받아올 때 사용됩니다.
  • 요청의 본문을 읽어 해당 데이터를 자바 객체로 변환합니다. 이를 POJO(Plain Old Java Object)로 매핑하여 사용할 수 있습니다.
  • 요청의 Content-Type이 application/json인 경우에만 사용됩니다.
  • 요청 본문의 데이터를 자동으로 파싱하여 자바 객체로 변환해주는 기능을 제공합니다.
  • 복잡한 객체 구조나 중첩된 JSON 데이터를 자동으로 매핑할 수 있습니다.

 

차이점

  • @RequestParam은 URL 매개변수나 폼 데이터를 받아오는 데 사용되며, @RequestBody는 요청 본문의 데이터를 자바 객체로 변환하는 데 사용됩니다.
  • @RequestParam은 단순한 데이터 타입에 사용되며, @RequestBody는 복잡한 객체 구조를 매핑할 수 있습니다.
  • @RequestParam은 URL 매개변수의 값에 직접 접근하고, @RequestBody는 요청 본문의 데이터를 자동으로 변환하여 객체로 받습니다.
  • @RequestParam은 기본적으로 필수 매개변수가 아니며, @RequestBody는 요청 본문이 있어야 합니다.