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
- 이전에 간단하게만 정리했던 내용들을 취합하고 다듬어 정리해보았다.
- https://ddururiiiiiii.tistory.com/418
- https://ddururiiiiiii.tistory.com/326
[Java/Spring] @RequestBody VS @RequestParam
오늘의 궁금증 @RequestBody 과 @RequestParam 의 차이점을 확실히 알아두고 가자. @RequestParam url 상에서 데이터를 찾음. key=value와 같은 단일 데이터를 넘겨 받음. ex) 태그 @RequestBody Http body에 데이터를 묶
ddururiiiiiii.tistory.com
728x90
320x100
'💻 하나씩 차곡차곡 > Back-end' 카테고리의 다른 글
[HTTP] 인터넷 네크워크 (IP(인터넷 프로토콜), TCP/UDP, PORT, DNS) (0) | 2024.08.05 |
---|---|
[스프링(Spring)] 롬복(Lombok) (롬복이란 / 자주 쓰는 기능 / @Data 사용을 지양해야 하는 이유 등) (0) | 2024.08.02 |
[스프링(Spring)] 어노테이션(Annotation)이란? (특징, 원리, 자주 쓰는 어노테이션 정리) (0) | 2024.08.02 |
[스프링부트(Spring boot)/Log4jdbc] 콘솔창에 쿼리문 + 테이블형태 결과값 로그 남기기 (0) | 2024.06.11 |
[Spring boot(스프링부트)/Mybatis] Xml에 카멜표기법 설정하기 (0) | 2024.06.07 |