rest_frameworkのstatus HTTPステータスコード
19861 ワード
Django Rest Frameworkにはstatusがあるpyのファイル
通常、Djangoビュー(views)では、HTTPステータスコードは純数字を使用しており、40044200304など、これらの数字の意味をそんなによく理解していないし、エラーコードが間違っていると無視されやすい.でもrest_frameworkでは、RESTフレームワークはstatusモジュール内の各ステータスコードにより明確な識別子を提供する.純粋な数字のHTTPステータスコードの代わりに使用するのは良い選択です.ステータスコードの使用は通常rest_とframeworkのResponseを参照してください.まず、Responseの構文定義を見てみましょう.
主に使用するパラメータdata,status.その中でstatusは私たちが言うstatusに対応しています.pyで定義されているステータスコード.
statusの下に、モジュールに含まれる完全なHTTPステータスコードセットを示します.モジュールは、ステータスコードが所定の範囲内であるかどうかをテストするための補助関数のセットも含む.
さらに詳細なHTTPステータスコード情報については、RFC 2616およびRFC 6585を参照してもよい.
情報-1 xx
このようなステータスコードは、一時的な応答を表します.デフォルトでは、RESTフレームワークでは1 xxステータスコードは使用されません.
成功-2 xx
このようなステータスコードは、クライアントのリクエストが正常に受信され、理解され、受信されたことを示します.
リダイレクト-3 xx
このようなステータスコードは、要求を完了するには、ユーザーエージェントがさらなる操作を行う必要があることを示します.
クライアントエラー-4 xx
4 xxクラスステータスコードは、クライアントにエラーがあるような場合に適用されます.HEADリクエストに応答する場合を除き、サーバはエラーの解釈と一時的または永続的なエンティティを含む必要があります.
サーバエラー-5 xx
数値「5」で始まるレスポンスステータスコードは、サーバがエラーを認識しているか、リクエストを実行できない場合を示します.HEADリクエストに応答する場合を除き、サーバはエラーの解釈と一時的または永続的なエンティティを含む必要があります.
アシスタント
次の補助関数は、応答コードのカテゴリを識別するために使用できます.
これにより,これらの状態コードの認識や誤りが発生した場合の判断が大幅に容易になる.
通常、Djangoビュー(views)では、HTTPステータスコードは純数字を使用しており、40044200304など、これらの数字の意味をそんなによく理解していないし、エラーコードが間違っていると無視されやすい.でもrest_frameworkでは、RESTフレームワークはstatusモジュール内の各ステータスコードにより明確な識別子を提供する.純粋な数字のHTTPステータスコードの代わりに使用するのは良い選択です.ステータスコードの使用は通常rest_とframeworkのResponseを参照してください.まず、Responseの構文定義を見てみましょう.
class Response(SimpleTemplateResponse):
"""
An HttpResponse that allows its data to be rendered into
arbitrary media types.
"""
def __init__(self, data=None, status=None,
template_name=None, headers=None,
exception=False, content_type=None):
"""
Alters the init arguments slightly.
For example, drop 'template_name', and instead use 'data'.
Setting 'renderer' and 'media_type' will typically be deferred,
For example being set automatically by the `APIView`.
"""
super(Response, self).__init__(None, status=status)
if isinstance(data, Serializer):
msg = (
'You passed a Serializer instance as data, but '
'probably meant to pass serialized `.data` or '
'`.error`. representation.'
)
raise AssertionError(msg)
self.data = data
self.template_name = template_name
self.exception = exception
self.content_type = content_type
if headers:
for name, value in six.iteritems(headers):
self[name] = value
......
主に使用するパラメータdata,status.その中でstatusは私たちが言うstatusに対応しています.pyで定義されているステータスコード.
from rest_framework import status
from rest_framework.response import Response
def example_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 2616およびRFC 6585を参照してもよい.
情報-1 xx
このようなステータスコードは、一時的な応答を表します.デフォルトでは、RESTフレームワークでは1 xxステータスコードは使用されません.
def is_informational(code):
return 100 <= code <= 199
HTTP_100_CONTINUE = 100 #
HTTP_101_SWITCHING_PROTOCOLS = 101 #
成功-2 xx
このようなステータスコードは、クライアントのリクエストが正常に受信され、理解され、受信されたことを示します.
def is_success(code):
return 200 <= code <= 299
HTTP_200_OK = 200 # OK
HTTP_201_CREATED = 201 # ,
HTTP_202_ACCEPTED = 202 # ,
HTTP_203_NON_AUTHORITATIVE_INFORMATION = 203 #
HTTP_204_NO_CONTENT = 204 #
HTTP_205_RESET_CONTENT = 205 #
HTTP_206_PARTIAL_CONTENT = 206 # GET 。
HTTP_207_MULTI_STATUS = 207 # ; WebDAV(RFC 2518) , XML , , 。
リダイレクト-3 xx
このようなステータスコードは、要求を完了するには、ユーザーエージェントがさらなる操作を行う必要があることを示します.
def is_redirect(code):
return 300 <= code <= 399
HTTP_300_MULTIPLE_CHOICES = 300 #
HTTP_301_MOVED_PERMANENTLY = 301 # URI;
HTTP_302_FOUND = 302 # , URL , , URL response Location , URL Request。
HTTP_303_SEE_OTHER = 303 # URI , GET 。
HTTP_304_NOT_MODIFIED = 304 # GET , , 。
HTTP_305_USE_PROXY = 305 # 。 Location 。
HTTP_306_RESERVED = 306 # 306 , , 。
HTTP_307_TEMPORARY_REDIRECT = 307 # 。 URI 。
クライアントエラー-4 xx
4 xxクラスステータスコードは、クライアントにエラーがあるような場合に適用されます.HEADリクエストに応答する場合を除き、サーバはエラーの解釈と一時的または永続的なエンティティを含む必要があります.
def is_client_error(code):
return 400 <= code <= 499
HTTP_400_BAD_REQUEST = 400 # 。 , 。 。
HTTP_401_UNAUTHORIZED = 401 # 。 。
HTTP_402_PAYMENT_REQUIRED = 402 # 。
HTTP_403_FORBIDDEN = 403 # , 。
HTTP_404_NOT_FOUND = 404 # Request-URI 。
HTTP_405_METHOD_NOT_ALLOWED = 405 #
HTTP_406_NOT_ACCEPTABLE = 406 #
HTTP_407_PROXY_AUTHENTICATION_REQUIRED = 407 # 401( ), 。
HTTP_408_REQUEST_TIMEOUT = 408 # 。 。
HTTP_409_CONFLICT = 409 # , 。
HTTP_410_GONE = 410 # , 。 。 301
HTTP_411_LENGTH_REQUIRED = 411 # Content-Length
HTTP_412_PRECONDITION_FAILED = 412 # , false。
HTTP_413_REQUEST_ENTITY_TOO_LARGE = 413 # , 。
HTTP_414_REQUEST_URI_TOO_LONG = 414 # URL
HTTP_415_UNSUPPORTED_MEDIA_TYPE = 415 #
HTTP_416_REQUESTED_RANGE_NOT_SATISFIABLE = 416 #
HTTP_417_EXPECTATION_FAILED = 417 # Expect , , 。
HTTP_422_UNPROCESSABLE_ENTITY = 422 # 。 , , 。
HTTP_423_LOCKED = 423 # ; 。
HTTP_424_FAILED_DEPENDENCY = 424 # 。 , , PROPPATCH。
HTTP_428_PRECONDITION_REQUIRED = 428 # ; HTTP , 。
HTTP_429_TOO_MANY_REQUESTS = 429 # 。
HTTP_431_REQUEST_HEADER_FIELDS_TOO_LARGE = 431 #
HTTP_451_UNAVAILABLE_FOR_LEGAL_REASONS = 451 # 。
サーバエラー-5 xx
数値「5」で始まるレスポンスステータスコードは、サーバがエラーを認識しているか、リクエストを実行できない場合を示します.HEADリクエストに応答する場合を除き、サーバはエラーの解釈と一時的または永続的なエンティティを含む必要があります.
def is_server_error(code):
return 500 <= code <= 599
HTTP_500_INTERNAL_SERVER_ERROR = 500 # ,
HTTP_501_NOT_IMPLEMENTED = 501 # ,
HTTP_502_BAD_GATEWAY = 502 # , 。
HTTP_503_SERVICE_UNAVAILABLE = 503 # ; , 。 。
HTTP_504_GATEWAY_TIMEOUT = 504 # , URI ( HTTP,FTP,LDAP) ( DNS) 。
HTTP_505_HTTP_VERSION_NOT_SUPPORTED = 505 # HTTP 。
HTTP_507_INSUFFICIENT_STORAGE = 507 #
HTTP_511_NETWORK_AUTHENTICATION_REQUIRED = 511 # ; , WIFI 。
アシスタント
次の補助関数は、応答コードのカテゴリを識別するために使用できます.
is_informational() # 1xx
is_success() # 2xx
is_redirect() # 3xx
is_client_error() # 4xx
is_server_error() # 5xx
これにより,これらの状態コードの認識や誤りが発生した場合の判断が大幅に容易になる.