HTTP 메시지 구조
message body
- 서버 간의 HTTP 통신에서 요청과 응답을 보낼 때, 필요한 데이터를 담아서 보내는 공간
- HTML, 이미지, JSON 등 byte로 표현할 수 있는 모든 데이터 전송 가능
{"id" : "1", "name" : "test"} // body 예시(JSON 형식)
@RequestBody
- HttpRequest의 본문 requestBody의 내용을 자바 객체로 매핑하는 역할(HTTP 요청의 body 내용 -> Java)
- DispatcherServlet에서 해당 HttpRequest의 미디어 타입을 확인하고, 타입에 맞는 MessageConverter를 통해 요청 본문인 requestBody를 통째로 변환하여 메서드로 전달
- 클라이언트측에서 요청 데이터를 body에 담고 content-type을 application/json으로 설정 필요
- GET 메서드의 요청 경우에는 HttpRequest의 requestBody로 요청 데이터가 전달되는 것이 아닌, URL의 파라미터로 전달되기 때문에 해당 어노테이션을 통한 요청 내용을 받을 수 없음
- body를 통해 값을 전송할 수 있지만, 설계적인 문제나 클라이언트에서 지원하지 않는 경우가 존재
- @PathVariable, @RequestParam을 통해서 요청을 받아야 함
- 헤더에 대한 정보가 필요한 경우 HttpEntity, @RequestHeader를 사용
@ResponseBody
- HttpResponse의 본문 responseBody의 내용으로 매핑하는 역할(Java -> HTTP 요청의 body 내용)
- return Type에 맞는 MessageConverter를 통해 return하는 객체를 해당 타입으로 변환하여 클라이언트에게 전달
예시
@ResponseBody
@PostMapping("/test")
public String Test(@RequestBody String messageBody) throws IOException {
...
}
'Spring > MVC' 카테고리의 다른 글
BindingResult (0) | 2024.06.27 |
---|---|
Model과 @ModelAttribute (0) | 2024.06.08 |
@Controller와 @RestController (1) | 2024.06.06 |
애노테이션(Annotation) (0) | 2024.05.23 |
스프링 MVC 구조 (0) | 2024.05.22 |