Я использую Connexion (https://github.com/zalando/connexion), чтобы убедиться, что моя спецификация openapi хорошо соблюдается, и чтобы иметь простые точки интеграции для подключения моих маршрутов к базовым функциям.
В любом случаеответы по умолчанию от Connexion - это json-ответы, следующие за Сведения о проблеме для HTTP API RFC. Это следующий формат, например:
{
"detail": "None is not of type 'object'",
"status": 404,
"title": "BadRequest",
"type": "about:blank"
}
Однако я хотел бы изменитьформат всех ошибок, отправленных в что-то вроде:
{
error: {
code: 400,
message: 'BadRequest',
detail: 'ID unknown'
innererror: {...}
}
}
Я не могу найти способ перехватить каждую ошибку, чтобы изменить формат того, что возвращается. Я знаю, что могу расширить connection.exception.ProblemException
class и добавить dict к параметру ext
в его конструкторе, но для любой ошибки 400
, например, я не могу его перехватить.
Итак, я знаю, что можно добавитьобработчики ошибок для конкретных кодов ошибок, например:
app.add_error_handler(404, error.normalize)
app.add_error_handler(400, error.normalize)
Однако для обработчика 404
мне удается успешно перехватить ошибку. Но для 400
(например, ошибка проверки json) - перехватне работает.
Как я могу перехватить каждую ошибку, отправленную из Connexion, и изменить формат json, даже если это просто для его расширения, например:
{
"detail": "Could not find page",
"error": {
"code": 404,
"message": "Could not find requested document."
},
"status": 404,
"title": "NotFound",
"type": "about:blank"
}
Я используюConnexion, с сервером 'торнадо'.
Заранее спасибо.Том