[DRF] Status codes

강민성·2024년 10월 1일

DRF API Guide

목록 보기
26/28

상태 코드

418 I'm a teapot - 주전자로 커피를 끓이려고 시도하면 "418 I'm a teapot" 오류 코드가 발생해야 합니다. 반환되는 엔터티 본문은 짧고 뚱뚱할 수 있습니다.
RFC 2324, 하이퍼 텍스트 커피포트 제어 프로토콜 (Hyper Text Coffee Pot Control Protocol)

응답에서 상태 코드만을 직접 사용하는 것은 권장되지 않습니다. REST 프레임워크에는 코드의 가독성을 높이기 위한 명명된 상수 세트가 포함되어 있습니다.

from rest_framework import status
from rest_framework.response import Response

def empty_view(self):
    content = {'please move along': 'nothing to see here'}
    return Response(content, status=status.HTTP_404_NOT_FOUND)

status 모듈에 포함된 전체 HTTP 상태 코드 세트는 아래에 나열되어 있습니다.

또한 상태 코드가 특정 범위 내에 있는지 테스트할 수 있는 헬퍼 함수들도 포함되어 있습니다.

from rest_framework import status
from rest_framework.test import APITestCase

class ExampleTestCase(APITestCase):
    def test_url_root(self):
        url = reverse('index')
        response = self.client.get(url)
        self.assertTrue(status.is_success(response.status_code))

HTTP 상태 코드를 적절하게 사용하는 방법에 대한 자세한 내용은 RFC 2616RFC 6585를 참조하세요.


정보성 상태 코드 - 1xx

이 상태 코드 클래스는 임시 응답을 나타냅니다. REST 프레임워크에서는 기본적으로 1xx 상태 코드를 사용하지 않습니다.

  • HTTP_100_CONTINUE
  • HTTP_101_SWITCHING_PROTOCOLS
  • HTTP_102_PROCESSING
  • HTTP_103_EARLY_HINTS

성공 상태 코드 - 2xx

이 상태 코드 클래스는 클라이언트의 요청이 성공적으로 수신되고, 이해되었으며, 수락되었음을 나타냅니다.

  • HTTP_200_OK
  • HTTP_201_CREATED
  • HTTP_202_ACCEPTED
  • HTTP_203_NON_AUTHORITATIVE_INFORMATION
  • HTTP_204_NO_CONTENT
  • HTTP_205_RESET_CONTENT
  • HTTP_206_PARTIAL_CONTENT
  • HTTP_207_MULTI_STATUS
  • HTTP_208_ALREADY_REPORTED
  • HTTP_226_IM_USED

리다이렉션 상태 코드 - 3xx

이 상태 코드 클래스는 요청을 완료하기 위해 사용자 에이전트가 추가 조치를 취해야 함을 나타냅니다.

  • HTTP_300_MULTIPLE_CHOICES
  • HTTP_301_MOVED_PERMANENTLY
  • HTTP_302_FOUND
  • HTTP_303_SEE_OTHER
  • HTTP_304_NOT_MODIFIED
  • HTTP_305_USE_PROXY
  • HTTP_306_RESERVED
  • HTTP_307_TEMPORARY_REDIRECT
  • HTTP_308_PERMANENT_REDIRECT

클라이언트 오류 상태 코드 - 4xx

4xx 클래스의 상태 코드는 클라이언트의 오류가 원인일 때 사용됩니다. HEAD 요청에 대한 응답을 제외하고, 서버는 오류 상황을 설명하는 엔티티를 포함해야 하며, 이 오류가 일시적인지 영구적인지를 포함해야 합니다.

  • HTTP_400_BAD_REQUEST
  • HTTP_401_UNAUTHORIZED
  • HTTP_402_PAYMENT_REQUIRED
  • HTTP_403_FORBIDDEN
  • HTTP_404_NOT_FOUND
  • HTTP_405_METHOD_NOT_ALLOWED
  • HTTP_406_NOT_ACCEPTABLE
  • HTTP_407_PROXY_AUTHENTICATION_REQUIRED
  • HTTP_408_REQUEST_TIMEOUT
  • HTTP_409_CONFLICT
  • HTTP_410_GONE
  • HTTP_411_LENGTH_REQUIRED
  • HTTP_412_PRECONDITION_FAILED
  • HTTP_413_REQUEST_ENTITY_TOO_LARGE
  • HTTP_414_REQUEST_URI_TOO_LONG
  • HTTP_415_UNSUPPORTED_MEDIA_TYPE
  • HTTP_416_REQUESTED_RANGE_NOT_SATISFIABLE
  • HTTP_417_EXPECTATION_FAILED
  • HTTP_421_MISDIRECTED_REQUEST
  • HTTP_422_UNPROCESSABLE_ENTITY
  • HTTP_423_LOCKED
  • HTTP_424_FAILED_DEPENDENCY
  • HTTP_425_TOO_EARLY
  • HTTP_426_UPGRADE_REQUIRED
  • HTTP_428_PRECONDITION_REQUIRED
  • HTTP_429_TOO_MANY_REQUESTS
  • HTTP_431_REQUEST_HEADER_FIELDS_TOO_LARGE
  • HTTP_451_UNAVAILABLE_FOR_LEGAL_REASONS

서버 오류 상태 코드 - 5xx

"5"로 시작하는 응답 상태 코드는 서버가 오류를 인지했거나 요청을 처리할 수 없는 상황을 나타냅니다. HEAD 요청에 대한 응답을 제외하고, 서버는 오류 상황을 설명하는 엔터티를 포함해야 하며, 이 오류가 일시적인지 영구적인지를 포함해야 합니다.

  • HTTP_500_INTERNAL_SERVER_ERROR
  • HTTP_501_NOT_IMPLEMENTED
  • HTTP_502_BAD_GATEWAY
  • HTTP_503_SERVICE_UNAVAILABLE
  • HTTP_504_GATEWAY_TIMEOUT
  • HTTP_505_HTTP_VERSION_NOT_SUPPORTED
  • HTTP_506_VARIANT_ALSO_NEGOTIATES
  • HTTP_507_INSUFFICIENT_STORAGE
  • HTTP_508_LOOP_DETECTED
  • HTTP_509_BANDWIDTH_LIMIT_EXCEEDED
  • HTTP_510_NOT_EXTENDED
  • HTTP_511_NETWORK_AUTHENTICATION_REQUIRED

헬퍼 함수

다음 헬퍼 함수는 응답 코드의 범주를 식별하는 데 사용됩니다.

  • is_informational() # 1xx
  • is_success() # 2xx
  • is_redirect() # 3xx
  • is_client_error() # 4xx
  • is_server_error() # 5xx

Reference

DRF API Guide - Status codes

profile
Back-end Junior Developer

0개의 댓글