该文档在https://developers.google.com/appengine/docs/python/endpoints/exceptions中提到了“子类化 endpoints.ServiceException” 。然而,子类不能真正表达字符串消息、“状态”和 http 代码之外的任何内容。
对于任何具有更智能的异常处理的应用程序,错误需要携带的不仅仅是这个。
如何子类化异常类,提供自定义消息/状态?
该文档在https://developers.google.com/appengine/docs/python/endpoints/exceptions中提到了“子类化 endpoints.ServiceException” 。然而,子类不能真正表达字符串消息、“状态”和 http 代码之外的任何内容。
对于任何具有更智能的异常处理的应用程序,错误需要携带的不仅仅是这个。
如何子类化异常类,提供自定义消息/状态?
目前还没有办法扩展payload,但是可以自定义状态码。
正如endpoints.api_exceptions
对400
错误所做的那样:
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
: 400httplib.UNAUTHORIZED
: 401httplib.FORBIDDEN
: 403httplib.NOT_FOUND
: 404httplib.CONFLICT
: 409httplib.GONE
: 410httplib.PRECONDITION_FAILED
: 412httplib.REQUEST_ENTITY_TOO_LARGE
: 413这些状态代码将映射到其他代码:
httplib.PAYMENT_REQUIRED
: 402 映射到 404httplib.METHOD_NOT_ALLOWED
: 405 映射到 501httplib.NOT_ACCEPTABLE
: 406 映射到 404httplib.PROXY_AUTHENTICATION_REQUIRED
: 407 映射到 404httplib.REQUEST_TIMEOUT
: 408 映射到 503httplib.LENGTH_REQUIRED
: 411 映射到 404httplib.REQUEST_URI_TOO_LONG
: 414 映射到 404httplib.UNSUPPORTED_MEDIA_TYPE
: 415 映射到 404httplib.REQUESTED_RANGE_NOT_SATISFIABLE
: 416 映射到 404httplib.EXPECTATION_FAILED
: 417 映射到 404此外,如果您的响应是一个message_types.VoidMessage
对象,您将能够发送204
无内容响应 ( httplib.NO_CONTENT
)。