0

该文档在https://developers.google.com/appengine/docs/python/endpoints/exceptions中提到了“子类化 endpoints.ServiceException” 。然而,子类不能真正表达字符串消息、“状态”和 http 代码之外的任何内容。

对于任何具有更智能的异常处理的应用程序,错误需要携带的不仅仅是这个。

如何子类化异常类,提供自定义消息/状态?

4

1 回答 1

3

目前还没有办法扩展payload,但是可以自定义状态码。

正如endpoints.api_exceptions400错误所做的那样:

import httplib
class BadRequestException(ServiceException):
  """Bad request exception that is mapped to a 400 response."""
  http_status = httplib.BAD_REQUEST

当前支持的错误状态代码列表(截至 2013 年 5 月 8 日)是:

  • httplib.BAD_REQUEST: 400
  • httplib.UNAUTHORIZED: 401
  • httplib.FORBIDDEN: 403
  • httplib.NOT_FOUND: 404
  • httplib.CONFLICT: 409
  • httplib.GONE: 410
  • httplib.PRECONDITION_FAILED: 412
  • httplib.REQUEST_ENTITY_TOO_LARGE: 413

这些状态代码将映射到其他代码:

  • httplib.PAYMENT_REQUIRED: 402 映射到 404
  • httplib.METHOD_NOT_ALLOWED: 405 映射到 501
  • httplib.NOT_ACCEPTABLE: 406 映射到 404
  • httplib.PROXY_AUTHENTICATION_REQUIRED: 407 映射到 404
  • httplib.REQUEST_TIMEOUT: 408 映射到 503
  • httplib.LENGTH_REQUIRED: 411 映射到 404
  • httplib.REQUEST_URI_TOO_LONG: 414 映射到 404
  • httplib.UNSUPPORTED_MEDIA_TYPE: 415 映射到 404
  • httplib.REQUESTED_RANGE_NOT_SATISFIABLE: 416 映射到 404
  • httplib.EXPECTATION_FAILED: 417 映射到 404

此外,如果您的响应是一个message_types.VoidMessage对象,您将能够发送204无内容响应 ( httplib.NO_CONTENT)。

于 2013-05-08T21:08:25.423 回答