Как можно создать подкласс конечных точек.ServiceException?
В документации упоминается "создание подклассов конечных точек.ServiceException" по адресу https://developers.google.com/appengine/docs/python/endpoints/exceptions. Тем не менее, подклассы не могут действительно выразить что-либо кроме строкового сообщения, "состояния" и http-кода.
Для любого приложения, чтобы иметь более умную обработку исключений, ошибки должны нести больше, чем это.
Как можно создать подкласс класса исключений, предоставив пользовательское сообщение / состояние?
1 ответ
В настоящее время нет способа расширить полезную нагрузку, но вы можете настроить код состояния.
Как это делается в endpoints.api_exceptions
для 400
ошибка:
import httplib
class BadRequestException(ServiceException):
"""Bad request exception that is mapped to a 400 response."""
http_status = httplib.BAD_REQUEST
Текущий список (по состоянию на 08.05.2013) кодов состояния, поддерживаемых для ошибок:
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
).