JAVA Spring HTTP 응답객체

윤슬·2025년 9월 23일

HTTP

하이퍼텍스트 전송 규약

HTTP(HyperText Transfer Protocol)는 클라이언트와 서버 간에 데이터를 주고받기 위한 프로토콜입니다.


HTTP 응답(반환) 코드

서버(스프링)가 클라이언트의 요청 처리 결과를 숫자로 표현한 코드입니다.

1. 2xx (요청 성공 의미)

  • 200 : 요청 성공, 응답 데이터 포함
  • 201 : 요청 성공, 저장 성공 의미 포함
  • 202 : 요청 성공, 아직 처리 중 (+ 비동기 작동)
  • 204 : 요청 성공, 응답 데이터 없음 (VOID)

2. 3xx (리다이렉션, 다른 URL 이동 의미)

  • 301 : 요청한 정보가 다른 URL로 이동
  • 302 : 임시적으로 다른 URL로 이동
  • 304 : 캐시 사용 (+ 빠른 조회, 1회 이상 조회한 기록)

3. 4xx (클라이언트 오류)

  • 400 : 요청 형식 오류 (쿼리스트링/BODY 등 잘못됨)
  • 401 : 인증 실패, 로그인 안됨
  • 403 : 접근 권한 없음, 권한 거부
  • 404 : 요청한 경로/자원/URL 없음
  • 405 : HTTP Method 잘못됨
  • 409 : 자료가 중복일 때 (+ 아이디 중복)
  • 415 : "Content-Type" 잘못됨

4. 5xx (서버 오류)

  • 500 : 서버 내부 오류, 예외 발생 (Exception)
  • 503 : 서버 과부하 또는 점검 알림

스프링에서 HTTP 응답코드 반환

1. ResponseEntity

  • 스프링에서 HTTP 응답 상태 코드와 본문(응답 자료)을 같이 보내는 클래스입니다.
  • <T>는 반드시 응답 자료를 보냅니다.
  • 주의: 제네릭 타입으로 기본 타입(8가지) 은 사용할 수 없습니다.

제네릭이란?

  • 클래스 내 멤버변수 타입을 클래스 설계 시 정하지 않고, 객체 생성 시 타입을 정하는 문법입니다.
  • 예시: ResponseEntity<T>, List<T>, Map<T1, T2>
  • 예시 설명:
    List<라면> : 라면 리스트
    List<콜라> : 콜라 리스트
  ResponseEntity< T > , ResponseEntity< 응답할자료 >
  MemberDto ---> ResponseEntity<MemberDto>

사용법 (Controller 클래스에서)

1. 일반 반환

int method1() { 
    return 1; 
}

MemberDto method1() { 
    return memberDto; 
}

2. ResponseEntity 사용 예제

// 정수 반환
ResponseEntity<Integer> method2() {  
    return ResponseEntity.status(200).body(1); 
}

// DTO 객체 반환
ResponseEntity<MemberDto> method2() {  
    return ResponseEntity.status(200).body(memberDto); 
}
profile
우상향그래프

0개의 댓글