@RequestParam 와 @RequestBody 알아보기

2025. 4. 24. 06:40·노빠꾸 개발일지/SPRING
반응형

1. @RequestParma : URL 또는 폼 데이터 바인딩


  • 동작 : 서블릿 API가 합쳐 둔 request parameter map에서 값을 꺼내어 메서드 인자로 주입한다. 단순 타입, 배열, List, Map 모두 지원한다.
  • GET, POST 구분 없음 : x-www-form-unlencoded POST도 동일하게 처리하므로 검색, 필터, 로그인 폼 모두 활용 가능하다.
  • 멀티파트 파일 : 파일 자체는 @RequestPart / MultipartFile을 쓰지만 파일명 같은 메타데이터는 @RequestParam으로 함께 받을 수 있다.
@GetMapping("/books")
public List<Book> list(
    @RequestParam(defaultValue = "0") int page,
    @RequestParam(defaultValue = "20") int size,
    @RequestParam(required = false) String category) { … }

 

 

2. @RequestBody : 본문 전체를객체로 수신


  • 동작 : Content-Type에 맞춰 등록된 HttpMessageConverter가 InputStream을 읽어 DTO로 역직렬화한다. JSON -> Jackson, XML -> JAXB 등
  • 검증 : @Valid + Bean Validation을 붙이면 역직렬화 직후 필드 검증이 작동한다.
@PostMapping("/books")
public Book create(@Valid @RequestBody BookCreateRequest req) { … }

 

3. List 객체를 Parameter로 받는 경우


아래는 List객체를 Paramter로 전달할 경우, 상황에 따른 @RequestParam과 @RequestBody 중 일반적인 선택 예시이다.
참고용으로 확인하고, 프로젝트 상황에 따라 사용하면 된다.

  @RequestParam @RequestBody
리스트 구조 List<Long>, List<String>처럼 단일 값 타입 List<OrderLine> 처럼 중첩 필드가 있는 객체
개수 길이 수 10 이하, 각 값이 짧을 때 수십개, 수백개 이상이거나 값이 길다
URL 노출 파라미터가 URL에 남아도 문제 없다 민감 정보 숨겨야 하거나 URL 길이 한계 우려가 있다.

 

4. @RequestParam & @RequestBody 사용 선택 예시


아래는 @RequestParma과 @RequestBody를 언제 사용할지 선택하는 일반적인 예시이다. 프로젝트 상황에 따라 아랴와 다르게 사용을 할 수도 있다.

구분 @RequestParam @RequestBody
HTTP 메서드 GET / DELETE POST/PUT/PATCH
데이터 개수, 복잡도 1 ~ 4개의 단순 값 깊이 있는 객체, 컬렉션
보안, 가시성 요구 URL 공유, 캐시, SEO가 중요 민감 데이터, 로그 최소화

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'노빠꾸 개발일지 > SPRING' 카테고리의 다른 글

[스프링 트랜잭션] 스프링 트랜잭션 기본  (0) 2024.08.29
[Spring Data JPA] 쿼리 메소드 @Query 어노테이션 JPQL 쿼리  (0) 2023.06.15
[Spring Data JPA] 쿼리 메소드(Query Method) 방식 알아보기  (0) 2023.06.14
[Spring Boot] 스프링부트 H2 DB 연결해보기  (0) 2023.06.13
[스프링] 의존성 주입(Dependency Injection) 방법  (0) 2023.06.12
'노빠꾸 개발일지/SPRING' 카테고리의 다른 글
  • [스프링 트랜잭션] 스프링 트랜잭션 기본
  • [Spring Data JPA] 쿼리 메소드 @Query 어노테이션 JPQL 쿼리
  • [Spring Data JPA] 쿼리 메소드(Query Method) 방식 알아보기
  • [Spring Boot] 스프링부트 H2 DB 연결해보기
No Backing
No Backing
노빠꾸
    300x250
  • No Backing
    누릇한 노빠꾸 블로그
    No Backing
  • 전체
    오늘
    어제
    • 분류 전체보기 (144)
      • 노빠꾸 서버 (20)
        • AWS (0)
        • 설치관련 (7)
        • 명령어 정리 (2)
        • 서버 설정 (8)
        • Nginx (2)
      • 노빠꾸 개발일지 (70)
        • JAVA (16)
        • JQUERY & JAVASCRIPT (10)
        • HTML5 (0)
        • SPRING (16)
        • Design Patterns (1)
        • DAUM API (1)
        • GIT (10)
        • Python (1)
        • SPRING SECURITY (1)
        • Vue (3)
      • 노빠꾸 데이터베이스 (9)
        • SQL (1)
        • ORACLE (3)
        • MySql (5)
      • 노빠꾸 일상 (13)
      • 노빠꾸 책 추천 (4)
      • 노빠꾸 경제 (20)
      • 노빠꾸 맥북 사용기 (7)
      • 노빠꾸 정보처리기사 정리 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    맥북 사용 팁
    사이트맵
    websecurityconfigureradapter 빈 등록
    Linode
    WebSecurityConfigurerAdapter
    맥북 단축키
    websecurityconfigureradapter란
    JPA 쿼리 메소드
    인텔리제이
    MySQL 사용자 계정 생성
    websecurityconfigureradapter 변경사항
    우분투 자바 설치
    스프링시큐리티 websecurityconfigureradapter
    MySQL 데이터베이스 생성
    경제용어
    개인서버 추천
    깃허브 코파일럿
    스프링 시큐리티 5.7 버전이후 변경사항
    스프링부트
    스프링부트 프로젝트
    websecurityconfigureradapter 사용법
    스프링부트란
    금융용어
    WebSecurityConfigurerAdapter Deprecated
    티스토리 사이트맵 등록
    주식용어
    스프링부트 JPA
    리노드
    Spring boot
    리눅스 자바 설치
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
No Backing
@RequestParam 와 @RequestBody 알아보기
상단으로

티스토리툴바