Notice
Recent Posts
Recent Comments
Link
반응형
«   2025/10   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Rootable의 개발일기

HTTP 요청과 응답을 다루는 클래스 본문

Spring

HTTP 요청과 응답을 다루는 클래스

dev-rootable 2025. 10. 21. 16:56
반응형

References: Google Gemini

 

스프링에서 HTTP 요청과 응답을 다루는 대표적인 클래스로 

 

  • InputStream/OutputStream: 바이너리 데이터를 직접 다루는 가장 낮은 레벨의 추상화
  • @RequestBody/@ResponseBody: 문자열(JSON/XML)을 객체로 자동 변환하는 중간 레벨의 추상화
  • HttpEntity: HTTP 헤더, 상태 코드, 바디를 모두 포함하는 메시지 전체를 다루는 가장 높은 레벨의 추상화

 

📌 InputStream/OutputStream (원시 스트림)

 

java.io의 클래스로 HTTP Body의 데이터를 원시 바이트(byte) 스트림으로 다룸

 

  • 처리 방식(스트리밍): 데이터를 청크(chunk) 단위로 조금씩 읽고 씀(전체 데이터를 메모리에 올리지 않음)
  • 자동 변환: 전혀 없음, 개발자가 직접 바이트를 읽어 파일로 저장하거나 파일에서 바이트를 읽어 응답으로 쏴줘야 함
  • 주 사용처: 대용량 파일 업로드 및 다운로드 시 메모리 초과(OutOfMemoryError)를 방지하기 위함

 

📌 @RequestBody/@ResponseBody (자동 변환 애노테이션)

 

메서드 파라미터나 반환 값에 붙이는 Annotation

 

  • 처리 방식(버퍼링): HTTP Body의 내용을 한 번에 전부 읽어서 메모리에 올린(버퍼링) 후 처리
  • 자동 변환
    • @RequestBody: 요청 body의 JSON/XML ➡ Java 객체 (HttpMessageConverter, 주로 Jackson)
    • @ResponseBody: 메서드가 반환하는 Java 객체 ➡ JSON/XML
  • 주 사용처: 대부분의 REST API에서 JSON 데이터를 객체로 주고 받을 때 사용

 

📌 HttpEntity/ResponseEntity (HTTP 메시지 전체)

 

HTTP 요청/응답 전체를 감싸는 클래스(객체)

 

  • 처리 방식(버퍼링): HTTP Body의 내용을 한 번에 전부 읽어서 메모리에 올린(버퍼링) 후 처리
  • 특징
    • HttpEntity<T>: HTTP 헤더와 바디를 함께 다룰 때 사용
    • ResponseEntity<T>: HttpEntity를 상속 받아, 응답 상태 코드, 헤더, 바디를 모두 제어 가능
  • 자동 변환: T 제네릭 타입에 대해 @RequestBody/@ResponseBody와 동일하게 자동 변환을 지원
  • 주 사용처: HTTP 상태 코드를 명시적으로 반환하거나, 응답에 커스텀 헤더를 추가해야 할 때 사용

 

 

반응형

'Spring' 카테고리의 다른 글

GenericFilterBean vs OncePerRequestFilter  (0) 2024.04.24
Spring Security 구조 및 흐름  (0) 2024.01.27
@Transactional  (0) 2023.08.08
스프링 파일 업로드/다운로드  (0) 2023.08.03
API 예외 처리  (0) 2023.08.01