본문 바로가기
CS/네트워크

[Network] HTTP 상태코드 정리

by 젊은오리 2023. 5. 17.
728x90

[김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식을 학습 후 정리한 내용입니다.]

HTTP 상태코드

HTTP 상태 코드란 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능이다. 대표적으로 5가지의 종류가 있으며, 첫 숫자가 뭘로 시작하느냐에 따라 의미가 달라진다.

  • 1xx (Informational): 요청이 수신되어 처리중
  • 2xx (Successful): 요청 정상 처리
  • 3xx (Redirection): 요청을 완료하려면 추가 행동이 필요
  • 4xx (Client Error): 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음
  • 5xx (Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함

 

1xx (요청이 수신되어 처리중)

거의 사용하지 않으므로 생략한다.

 

2xx (요청을 성공적으로 처리)

1) 200 OK

  • 요청이 성공했을 때

2) 201 Created

  • 요청이 성공하여 새로운 리소스가 생성됐을 때
  • 생성된 리소스는 응답의 Location 헤더 필드로 식별할 수 있다.

3) 202 Accepted

  • 요청이 접수되었으나 처리가 완료되지 않았을 때
  • ex) 요청 접수 후 1시간 뒤에 배치 프로세스가 요청을 처리하는 경우

4) 204 No Content

  • 서버가 요청을 성공적으로 수행했지만, 응답 페이로드 본문에 보낼 데이터가 없을 때
  • ex) 웹 문서 편집기에서 save를 누르는 경우 save 클릭의 결과로 아무 내용이 없어도 되고, 같은 화면을 유지해야 되는 경우

 

3xx (요청을 완료하기 위해 유저의 추가 조치 필요)

웹 브라우저는 3xx 응답의 결과에 Location 헤더가 있으면, Location 위치로 자동 이동된다.(리다이렉트)

1) 301 Moved Parmenently

  • 요청한 리소스가 새로운 위치로 영구적으로 이동되었을 때
  • 영구 리다이렉션
  • 리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있다.

2) 308 Permanent Redirect

  • 영구 리다이렉션(301과 기능은 같다.)
  • 리다이렉트시 요청 메서드와 본문이 유지된다.

3) 302 Found

  • 요청한 리소스가 새로운 위치로 일시적으로 이동되었을 때
  • 일시 리다이렉션
  • 리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있다.

4) 307 Temporary Redirect

  • 일시 리다이렉션(302와 기능은 같다.)
  • 리다이렉트시 요청 메서드와 본문이 유지된다.

5) 303 See Other

  • 일시 리다이렉션(302와 기능은 같다.)
  • 리다이렉트시 요청 메서드가 GET으로 변한다.

6) 304 Not Modified

  • 클라이언트가 캐시된 리소스를 요청했으며, 이 리소스가 수정되지 않았을 때 사용된다.
  • 304 응답은 응답에 메시지 바디를 포함하면 안된다. (로컬 캐시를 사용해야 하므로)
  • 조건부 GET, HEAD 요청 시 사용된다.

 

4xx (클라이언트 오류 발생)

1) 400 Bad Request

  • 클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없을 때
  • 요청 구문, 메시지 등 오류
  • ex)요청 파라미터가 잘못됐거나, API 스펙이 맞지 않을 때

2) 401 Unauthorized

  • 클라이언트가 해당 리소스에 대한 인증이 필요할 때
  • 참고 - 인증(Authentication) : 본인이 누구인지 확인(로그인) 인가(Authorization) : 권한부여(특정 리소스에 접근할 수 있는 권한)
  • 오류 메시지가 Unauthorized이지만 인증 되지 않음.(아쉬운 에러 이름..)

3) 403 Forbidden

  • 서버가 요청을 이해했지만 승인을 거부했을 때
  • ex) ADMIN이 아닌 사용자가 로그인하여 ADMIN등급의 리소스에 접근하는 경우

4) 404 Not Found

  • 요청 리소스를 찾을 수 없을 때
  • 클라이언트가 권한이 부족한 리소스에 접근할 경우 리소스를 숨기고 싶을 때도 사용될 수 있다.

 

5xx (서버 문제로 오류 발생)

1) 500 Internal Servcer Error

  • 서버 문제로 오류가 발생했을 때
  • 애매하면 500오류를 발생시킨다.
  • 비즈니스 로직 상의 에러는 500으로 내서는 안된다. 데이터베이스가 다운됐다던지, NullPointException이 발생하는 경우 등과 같은 실제 서버 상의 오류가 있을 때 500 에러를 반환한다.

2) 503 Service Unavailable

  • 서비스가 이용 불가할 때
  • 서버가 일시적인 과부하 또는 예정된 작업으로 잠시 요청을 처리할 수 없을 때
  • 서버 오류는 예상 못하는 경우가 많으므로 503을 실제로 보기 힘들다고 한다.
728x90

댓글