본문 바로가기
💻 하나씩 차곡차곡/Back-end

[스프링(Spring)] HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법 (@RequestParam, @RequestBody, @ModelAttribute 이해하기)

by 뚜루리 2024. 8. 2.
728x90
320x100

HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 가장 많이 사용하는 3가지 방법과 스프링과 연계하여 @RequestParam, @RequestBody, @ModelAttribute 어노테이션에 대해 이해해보자!

 

 

[HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법]

가장 많이 사용하는 3가지 방법을 정리하였다.

 

 

1. GET - 쿼리 파라미터 형식으로 요청하기

  • HTTP message body 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달하는 방식이다.
  • 요청형태 -> /url?username=hello&age=20
  • 검색, 필터, 페이징 등에서 많이 사용한다.

*** 이 때 주로 사용하는 (혹은 적절한) 스프링 어노테이션

@RequestParam

@GetMapping("/user")
public User getUser(@RequestParam("name") String name, @RequestParam("age") int age) {
    // name과 age 파라미터를 사용하여 User 객체를 생성하고 반환
}
  • @RequestParam은 HTTP 요청의 쿼리 파라미터를 객체로 변환할 때 사용하는 어노테이션으로, 파라미터의 이름과 타입을 지정할 수 있다.

 


 

2. POST - HTML Form 으로 요청하기

  • 메시지 바디에 쿼리 파리미터 형식(username=hello&age=20)으로 전달하는 방식이다.
  • 요청형식 -> content-type: application/x-www-form-urlencoded
  • 회원 가입, 상품 주문, HTML Form 등에 많이 사용한다.

*** 이 때 주로 사용하는 (혹은 적절한) 스프링 어노테이션

@ModelAttribute

@PostMapping("/user")
public String createUser(@ModelAttribute User user) {
    // user 객체를 사용하여 새로운 사용자 생성
    return "redirect:/user/" + user.getId();
}
  • @ModelAttribute는 컨트롤러에서 뷰로 전달할 객체를 지정할 때 사용하는 어노테이션으로, 폼 입력 데이터를 처리할 때 유용하다.
  • 폼 입력 데이터를 객체로 변환하여 모델에 저장하고, 이를 뷰에서 사용할 수 있도록 한다.

 


 

3. HTTP message body에 데이터를 직접 담아서 요청하기

  • 말 그대로 HTTP message body에 데이터를 직접 담아 요청하는 방식이다.
  • HTTP API에서 주로 사용하며 데이터 형식은 JSON, XML, TEXT 등을 사용하며 주로 JSON을 많이 사용한다.

*** 이 때 주로 사용하는 (혹은 적절한) 스프링 어노테이션

@RequestBody

@PostMapping("/user")
public void createUser(@RequestBody User user) {
    // user 객체를 사용하여 새로운 사용자 생성
}
  • @RequestBody는 HTTP 요청의 본문을 객체로 변환할 때 사용하는 어노테이션으로, 주로 POST, PUT, PATCH 등의 요청에서 사용된다.

 

 


(+) 스프링 어노테이션 더 알아보기

 

[스프링(Spring)] 어노테이션(Annotation)이란? (특징, 원리, 자주 쓰는 어노테이션 정리)

스프링에서 사용하는 어노테이션이 무엇인지, 어노테이션의 특징과 자주 쓰는 어노테이션에 대해서 정리해보자.  어노테이션(Annotation)이란?어노테이션은 자바의 메타데이터(metadata)로, 코드에

ddururiiiiiii.tistory.com

 


 

[Java/Spring] @RequestBody VS @RequestParam

오늘의 궁금증 @RequestBody 과 @RequestParam 의 차이점을 확실히 알아두고 가자. @RequestParam url 상에서 데이터를 찾음. key=value와 같은 단일 데이터를 넘겨 받음. ex) 태그 @RequestBody Http body에 데이터를 묶

ddururiiiiiii.tistory.com

 

 

728x90
320x100