官方原文链接

状态码

不建议在你的响应中使用裸露(直接使用数字)的状态码。 REST framework 包含一组命名常量,你可以使用它们使代码更加清晰易读。

  1. from rest_framework import status
  2. from rest_framework.response import Response
  3. def empty_view(self):
  4. content = {'please move along': 'nothing to see here'}
  5. return Response(content, status=status.HTTP_404_NOT_FOUND)

下面列出了 status 模块中包含的全部 HTTP 状态码。

该模块还包含一组帮助函数,用于测试状态码是否在给定范围内。

  1. from rest_framework import status
  2. from rest_framework.test import APITestCase
  3. class ExampleTestCase(APITestCase):
  4. def test_url_root(self):
  5. url = reverse('index')
  6. response = self.client.get(url)
  7. self.assertTrue(status.is_success(response.status_code))

信息 - 1xx

这类状态码表示临时响应。默认情况下,REST framework 中没有使用 1xx 状态码。

  1. HTTP_100_CONTINUE
  2. HTTP_101_SWITCHING_PROTOCOLS

成功 - 2xx

这类状态码表明客户端的请求已被成功接收,理解和接受。

  1. HTTP_200_OK
  2. HTTP_201_CREATED
  3. HTTP_202_ACCEPTED
  4. HTTP_203_NON_AUTHORITATIVE_INFORMATION
  5. HTTP_204_NO_CONTENT
  6. HTTP_205_RESET_CONTENT
  7. HTTP_206_PARTIAL_CONTENT
  8. HTTP_207_MULTI_STATUS

重定向 - 3xx

这类状态码表明用户代理需要采取进一步行动来完成请求。

  1. HTTP_300_MULTIPLE_CHOICES
  2. HTTP_301_MOVED_PERMANENTLY
  3. HTTP_302_FOUND
  4. HTTP_303_SEE_OTHER
  5. HTTP_304_NOT_MODIFIED
  6. HTTP_305_USE_PROXY
  7. HTTP_306_RESERVED
  8. HTTP_307_TEMPORARY_REDIRECT

客户端错误 - 4xx

4xx 状态码适用于客户端出现错误的情况。除了响应 HEAD 请求之外,服务器应该包含一个错误情况说明的实体,以及它是临时的还是永久的。

  1. HTTP_400_BAD_REQUEST
  2. HTTP_401_UNAUTHORIZED
  3. HTTP_402_PAYMENT_REQUIRED
  4. HTTP_403_FORBIDDEN
  5. HTTP_404_NOT_FOUND
  6. HTTP_405_METHOD_NOT_ALLOWED
  7. HTTP_406_NOT_ACCEPTABLE
  8. HTTP_407_PROXY_AUTHENTICATION_REQUIRED
  9. HTTP_408_REQUEST_TIMEOUT
  10. HTTP_409_CONFLICT
  11. HTTP_410_GONE
  12. HTTP_411_LENGTH_REQUIRED
  13. HTTP_412_PRECONDITION_FAILED
  14. HTTP_413_REQUEST_ENTITY_TOO_LARGE
  15. HTTP_414_REQUEST_URI_TOO_LONG
  16. HTTP_415_UNSUPPORTED_MEDIA_TYPE
  17. HTTP_416_REQUESTED_RANGE_NOT_SATISFIABLE
  18. HTTP_417_EXPECTATION_FAILED
  19. HTTP_422_UNPROCESSABLE_ENTITY
  20. HTTP_423_LOCKED
  21. HTTP_424_FAILED_DEPENDENCY
  22. HTTP_428_PRECONDITION_REQUIRED
  23. HTTP_429_TOO_MANY_REQUESTS
  24. HTTP_431_REQUEST_HEADER_FIELDS_TOO_LARGE
  25. HTTP_451_UNAVAILABLE_FOR_LEGAL_REASONS

服务器错误 - 5xx

5xx 表示服务器意识到其发生错误或无法执行请求的情况。除了响应 HEAD 请求之外,服务器应该包含一个错误情况说明的实体,以及它是临时的还是永久的。

  1. HTTP_500_INTERNAL_SERVER_ERROR
  2. HTTP_501_NOT_IMPLEMENTED
  3. HTTP_502_BAD_GATEWAY
  4. HTTP_503_SERVICE_UNAVAILABLE
  5. HTTP_504_GATEWAY_TIMEOUT
  6. HTTP_505_HTTP_VERSION_NOT_SUPPORTED
  7. HTTP_507_INSUFFICIENT_STORAGE
  8. HTTP_511_NETWORK_AUTHENTICATION_REQUIRED

帮助函数

以下帮助函数可用于识别响应代码的类别。

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