[Spring] Spring 요청 데이터 (3)

이연우·2025년 7월 23일

TIL

목록 보기
32/100

🧾 HttpEntity란?

  • HTTP Header, Body 정보를 편리하게 조회할 수 있도록 만들어 줌

🔍 역할 정리

기능설명
✅ Body 조회요청 메시지 바디 내용 직접 읽기
✅ Header 조회요청 헤더 확인 가능
✅ 응답 처리응답 바디 + 헤더 + 상태코드 모두 설정 가능
❌ View 처리View 이름 반환과는 무관 (View 이름 X)
❌ RequestParam과 무관파라미터(Query String)는 이 방식과 관계없음

💡 HttpEntity의 확장 클래스

클래스명설명
RequestEntity<T>+ 요청 URL, HTTP 메서드 등 정보 포함
ResponseEntity<T>+ 응답 상태 코드 지정 가능 (ex. 201 CREATED)

🗒️ 예시 코드

@Controller
public class RequestBodyStringController {
	
	@PostMapping("/v4/request-body-text")
  public HttpEntity<String> requestBodyTextV4(RequestEntity<String> httpEntity) {

      // HttpMessageConverter가 동작해서 아래 코드가 동작하게 됨
      String body = httpEntity.getBody();
      // url, method 사용 가능

      return new ResponseEntity<>("response = " + body, HttpStatus.CREATED); // Body Data, 상태 코드
  }

}

🧪 Postman 요청:

  • Body → raw → text/plain
  • 응답 상태: 201 Created
  • body: response = 요청 내용


🌼 @RequestBody, @ResponseBody

  • 각각 Request, Response 객체의 Body에 편하게 접근하여 사용할 수 있음

📌 핵심 개념

어노테이션역할
@RequestBodyHTTP 요청 바디 → 자바 객체 or 문자열
@ResponseBody자바 객체 or 문자열 → HTTP 응답 바디
@RequestHeader요청 헤더 값 조회 가능

🗒️ 예시 코드

@Controller // @RestController = @Controller + @ResponseBody
public class RequestBodyStringController {
	
  @ResponseBody
  @PostMapping("/v5/request-body-text")
  public String requestBodyTextV5(
          @RequestBody String body,
          @RequestHeader HttpHeaders headers
  ) {
      // HttpMessageConverter가 동작해서 아래 코드가 동작하게 됨
      String bodyMessage = body;

      return "request header = " + headers + " response body = " + bodyMessage;
  }
}

📨 @RequestBody

  • 요청 바디 내용을 객체 또는 문자열로 자동 변환
  • 내부에서 HttpMessageConverter가 작동하여 변환 처리
@PostMapping("/v5/request-body-text")
@ResponseBody
public String requestBodyTextV5(
        @RequestBody String body,
        @RequestHeader HttpHeaders headers
) {
    return "request header = " + headers + " response body = " + body;
}

@RequestBody String body: 텍스트 그대로 읽어옴
@RequestBody MyDto dto: JSON → 객체로 자동 변환 (Jackson 등 사용)

📤 @ResponseBody

  • 컨트롤러 메서드의 리턴 값을 HTTP 응답 body로 직렬화하여 클라이언트에 반환
  • View 이름이 아닌 데이터 응답용 (API 작성에 필수)

🌐 @RestController = @Controller + @ResponseBody

  • REST API를 작성할 때는 대부분 @RestController를 사용
@RestController
public class MyApiController {
    @PostMapping("/echo")
    public String echo(@RequestBody String body) {
        return "You sent: " + body;
    }
}

0개의 댓글