본문 바로가기
Spring/MVC

@RequestBody와 @ResponseBody

by o3oppp 2024. 6. 6.
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