HTTP

[모든 개발자를 위한 HTTP 웹 기본 지식] HTTP 상태코드

kkkkkkkkkkkk 2022. 11. 16. 14:36

상태코드

HTTP API 에 대해 클라이언트가 요청을 보내면 서버측에선 응답 메시지를 보내준다.

응답 메시지 안에 상태코드가 포함 되어 있다.

이 상태코드를 통해서 서버에서 어덯게 처리되었는지를 추측할 수 있다.

  • 1xx(informational)
    • 요청이 수신되어 처리중이다.

 

  • 2xx(successful)
    • 요청이 정상적으로 처리되었다.
    • 200(OK)
      • GET과 같은 조회 요청에 성공적으로 응답하는 경우
    • 201(Created)
      • POST 와 같은 생성요청으로 리소스가 생성이 정상적으로 된 경우에 해당한다.
      • 응답 메시지에는 생성된 리소스 식별자가 Location 필드에 추가되어 응답된다.
    • 202(Accepted)
      • 요청은 서버에서 받았으나 아직 처리가 되지 않은 경우
    • 204(No Content)
      • 서버에서 요청은 성공적으로 수행했지만, 응답시 메시지 바디에 담을 데이터가 없는 경우에 해당한다.

 

  • 3xx(Redirection)
    • 요청을 완료하기 위해 추가 행동이 필요
      • 응답메시지 헤더에 Location 필드가 있는 경우 해당 위치로 이동한다.
      • 영구 리다이렉션 : 특정 리소스의 URI가 영구적으로 이동한다.
        • 301(Moved Permanently)
          • 리다이렉트시 요청 메서드 GET으로 변한다.
          • 본문이 변경될 수 있다.
        • 308(Permanent Redirect)
          • 301 상태코드와 기능은 동일하다.
          • 응답 메시지의 본문과 요청 메서드가 유지된다.
      • 일시 리다이렉션 : 리소스의 URI 가 일시적으로 변경된다.
        • 302(Found)
          • 리다이렉트시 요청 메서드가 GET으로 변한다.
        • 307(Temporary Redirect)
          • 302와 기능은 같다.
          • 응답 메시지의 본문과 요청 메서드가 유지된다.
        • 303(See Other)
          • 302와 기능은 같다.
          • 리다이렉트시 요청 메서드가 GET으로 변한다.
        • 304(Not Modified)
          • 캐시를 목적으로 사용한다.
          • 클라이언트에 리소스가 수정되지 않았음을 알린다.
          • 304 응답은 응답에 메시지 바디를 사용하면 안된다.
          • 조건부 GET, HEAD 요청시 사용한다.

 

  • 4xx(Client Error)
    • 클라이언트에서 잘못된 스펙으로 데이터를 보냈거나 인증 , 인가가 만족되지 않아 서버에서 요청을 수행할 수 없다.
      • 400(Bad Request)
        • 클라이언트가 보내는 포맷이나 데이터에 문제가 있을 경우 발생
      • 401(Unauthorized)
        • 인증(Authentication)이 되지 않은 클라이언트에서 접근시 응답하는 상태코드이다.
      • 403(Forbidden)
        • 인증자격은 있지만, 해당 리소스에 접근할 권한이 없는 경우 응답하는 상태코드
        • 일반 회원이 관리자 페이지에 접근하려 하는 경우
      • 404(Not Found)
        • 요청 리소스를 찾을 수 없을 때 발생

 

  • 5xx(Server Error)
    • 서버에서 에러가 발생하여 요청을 처리할 수 없는 경우
      • 500(Internal Server Error)
        • 서버 내부 문제로 오류가 발생한다.
        • 서버측의 로직에서 발생하는 대다수의 예외나 에러는 모두 500 오류를 낸다.
        • 정말 서버에 오류가 있을 때만 발생해야 한다.
        • 비지니스 로직과 같이 시스템이 아닌 로직상의 문제가 발생할 때 500 응답 코드를 반환해서는 안된다.
      • 503(Service Unavailable)
        • 서버에 트래픽 문제 혹은 점검으로 잠시 요청을 처리할 수 없는 경우 응답으로 사용된다.
        • Retry-After 헤더 필드로 얼마 뒤 복구되는지 보낼 순 있지만, 예측 불가능한 경우 대부분이기에 잘 사용되지 않는다.