response_code.py 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. import dataclasses
  4. from enum import Enum
  5. class CustomCodeBase(Enum):
  6. """自定义状态码基类"""
  7. @property
  8. def code(self):
  9. """
  10. 获取状态码
  11. """
  12. return self.value[0]
  13. @property
  14. def msg(self):
  15. """
  16. 获取状态码信息
  17. """
  18. return self.value[1]
  19. class CustomResponseCode(CustomCodeBase):
  20. """自定义响应状态码"""
  21. HTTP_200 = (200, '请求成功')
  22. HTTP_201 = (201, '新建请求成功')
  23. HTTP_202 = (202, '请求已接受,但处理尚未完成')
  24. HTTP_204 = (204, '请求成功,但没有返回内容')
  25. HTTP_400 = (400, '请求错误')
  26. HTTP_401 = (401, '未经授权')
  27. HTTP_403 = (403, '禁止访问')
  28. HTTP_404 = (404, '请求的资源不存在')
  29. HTTP_410 = (410, '请求的资源已永久删除')
  30. HTTP_422 = (422, '请求参数非法')
  31. HTTP_425 = (425, '无法执行请求,由于服务器无法满足要求')
  32. HTTP_429 = (429, '请求过多,服务器限制')
  33. HTTP_500 = (500, '服务器内部错误')
  34. HTTP_502 = (502, '网关错误')
  35. HTTP_503 = (503, '服务器暂时无法处理请求')
  36. HTTP_504 = (504, '网关超时')
  37. class CustomErrorCode(CustomCodeBase):
  38. """自定义错误状态码"""
  39. CAPTCHA_ERROR = (40001, '验证码错误')
  40. @dataclasses.dataclass
  41. class CustomResponse:
  42. """
  43. 提供开放式响应状态码,而不是枚举,如果你想自定义响应信息,这可能很有用
  44. """
  45. code: int
  46. msg: str
  47. class StandardResponseCode:
  48. """标准响应状态码"""
  49. """
  50. HTTP codes
  51. See HTTP Status Code Registry:
  52. https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
  53. And RFC 2324 - https://tools.ietf.org/html/rfc2324
  54. """
  55. HTTP_100 = 100 # CONTINUE: 继续
  56. HTTP_101 = 101 # SWITCHING_PROTOCOLS: 协议切换
  57. HTTP_102 = 102 # PROCESSING: 处理中
  58. HTTP_103 = 103 # EARLY_HINTS: 提示信息
  59. HTTP_200 = 200 # OK: 请求成功
  60. HTTP_201 = 201 # CREATED: 已创建
  61. HTTP_202 = 202 # ACCEPTED: 已接受
  62. HTTP_203 = 203 # NON_AUTHORITATIVE_INFORMATION: 非权威信息
  63. HTTP_204 = 204 # NO_CONTENT: 无内容
  64. HTTP_205 = 205 # RESET_CONTENT: 重置内容
  65. HTTP_206 = 206 # PARTIAL_CONTENT: 部分内容
  66. HTTP_207 = 207 # MULTI_STATUS: 多状态
  67. HTTP_208 = 208 # ALREADY_REPORTED: 已报告
  68. HTTP_226 = 226 # IM_USED: 使用了
  69. HTTP_300 = 300 # MULTIPLE_CHOICES: 多种选择
  70. HTTP_301 = 301 # MOVED_PERMANENTLY: 永久移动
  71. HTTP_302 = 302 # FOUND: 临时移动
  72. HTTP_303 = 303 # SEE_OTHER: 查看其他位置
  73. HTTP_304 = 304 # NOT_MODIFIED: 未修改
  74. HTTP_305 = 305 # USE_PROXY: 使用代理
  75. HTTP_307 = 307 # TEMPORARY_REDIRECT: 临时重定向
  76. HTTP_308 = 308 # PERMANENT_REDIRECT: 永久重定向
  77. HTTP_400 = 400 # BAD_REQUEST: 请求错误
  78. HTTP_401 = 401 # UNAUTHORIZED: 未授权
  79. HTTP_402 = 402 # PAYMENT_REQUIRED: 需要付款
  80. HTTP_403 = 403 # FORBIDDEN: 禁止访问
  81. HTTP_404 = 404 # NOT_FOUND: 未找到
  82. HTTP_405 = 405 # METHOD_NOT_ALLOWED: 方法不允许
  83. HTTP_406 = 406 # NOT_ACCEPTABLE: 不可接受
  84. HTTP_407 = 407 # PROXY_AUTHENTICATION_REQUIRED: 需要代理身份验证
  85. HTTP_408 = 408 # REQUEST_TIMEOUT: 请求超时
  86. HTTP_409 = 409 # CONFLICT: 冲突
  87. HTTP_410 = 410 # GONE: 已删除
  88. HTTP_411 = 411 # LENGTH_REQUIRED: 需要内容长度
  89. HTTP_412 = 412 # PRECONDITION_FAILED: 先决条件失败
  90. HTTP_413 = 413 # REQUEST_ENTITY_TOO_LARGE: 请求实体过大
  91. HTTP_414 = 414 # REQUEST_URI_TOO_LONG: 请求 URI 过长
  92. HTTP_415 = 415 # UNSUPPORTED_MEDIA_TYPE: 不支持的媒体类型
  93. HTTP_416 = 416 # REQUESTED_RANGE_NOT_SATISFIABLE: 请求范围不符合要求
  94. HTTP_417 = 417 # EXPECTATION_FAILED: 期望失败
  95. HTTP_418 = 418 # UNUSED: 闲置
  96. HTTP_421 = 421 # MISDIRECTED_REQUEST: 被错导的请求
  97. HTTP_422 = 422 # UNPROCESSABLE_CONTENT: 无法处理的实体
  98. HTTP_423 = 423 # LOCKED: 已锁定
  99. HTTP_424 = 424 # FAILED_DEPENDENCY: 依赖失败
  100. HTTP_425 = 425 # TOO_EARLY: 太早
  101. HTTP_426 = 426 # UPGRADE_REQUIRED: 需要升级
  102. HTTP_427 = 427 # UNASSIGNED: 未分配
  103. HTTP_428 = 428 # PRECONDITION_REQUIRED: 需要先决条件
  104. HTTP_429 = 429 # TOO_MANY_REQUESTS: 请求过多
  105. HTTP_430 = 430 # Unassigned: 未分配
  106. HTTP_431 = 431 # REQUEST_HEADER_FIELDS_TOO_LARGE: 请求头字段太大
  107. HTTP_451 = 451 # UNAVAILABLE_FOR_LEGAL_REASONS: 由于法律原因不可用
  108. HTTP_500 = 500 # INTERNAL_SERVER_ERROR: 服务器内部错误
  109. HTTP_501 = 501 # NOT_IMPLEMENTED: 未实现
  110. HTTP_502 = 502 # BAD_GATEWAY: 错误的网关
  111. HTTP_503 = 503 # SERVICE_UNAVAILABLE: 服务不可用
  112. HTTP_504 = 504 # GATEWAY_TIMEOUT: 网关超时
  113. HTTP_505 = 505 # HTTP_VERSION_NOT_SUPPORTED: HTTP 版本不支持
  114. HTTP_506 = 506 # VARIANT_ALSO_NEGOTIATES: 变体也会协商
  115. HTTP_507 = 507 # INSUFFICIENT_STORAGE: 存储空间不足
  116. HTTP_508 = 508 # LOOP_DETECTED: 检测到循环
  117. HTTP_509 = 509 # UNASSIGNED: 未分配
  118. HTTP_510 = 510 # NOT_EXTENDED: 未扩展
  119. HTTP_511 = 511 # NETWORK_AUTHENTICATION_REQUIRED: 需要网络身份验证
  120. """
  121. WebSocket codes
  122. https://www.iana.org/assignments/websocket/websocket.xml#close-code-number
  123. https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent
  124. """
  125. WS_1000 = 1000 # NORMAL_CLOSURE: 正常闭合
  126. WS_1001 = 1001 # GOING_AWAY: 正在离开
  127. WS_1002 = 1002 # PROTOCOL_ERROR: 协议错误
  128. WS_1003 = 1003 # UNSUPPORTED_DATA: 不支持的数据类型
  129. WS_1005 = 1005 # NO_STATUS_RCVD: 没有接收到状态
  130. WS_1006 = 1006 # ABNORMAL_CLOSURE: 异常关闭
  131. WS_1007 = 1007 # INVALID_FRAME_PAYLOAD_DATA: 无效的帧负载数据
  132. WS_1008 = 1008 # POLICY_VIOLATION: 策略违规
  133. WS_1009 = 1009 # MESSAGE_TOO_BIG: 消息太大
  134. WS_1010 = 1010 # MANDATORY_EXT: 必需的扩展
  135. WS_1011 = 1011 # INTERNAL_ERROR: 内部错误
  136. WS_1012 = 1012 # SERVICE_RESTART: 服务重启
  137. WS_1013 = 1013 # TRY_AGAIN_LATER: 请稍后重试
  138. WS_1014 = 1014 # BAD_GATEWAY: 错误的网关
  139. WS_1015 = 1015 # TLS_HANDSHAKE: TLS握手错误
  140. WS_3000 = 3000 # UNAUTHORIZED: 未经授权
  141. WS_3003 = 3003 # FORBIDDEN: 禁止访问