Что я знаю:
Мы все знаем, что у колбы есть полезное query.get_or_404
, мы можем вызвать его для любого объекта класса и вернуть объект или вызвать ошибку 404, если объект не найден.
Проблема:
У меня очень большое приложение, и я использую эту функцию для своих запросов, но теперь это немного сбивает с толку, когда я отправляю данные во внешний интерфейс и другое приложение, использующее мои API.
Когда объект, который они запрашивают, не найден, он возвращает 404, и то же самое происходит и в случае, когда страница не найдена.
Чего я хочу достичь:
Я хотел бы получить осмысленный ответ, отличающийся для каждого не найденного объекта и отличающийся для обычного сообщения об ошибке 404.
Пример:
если у меня есть этот запрос:
user = User.query.get_or_404(id)
если пользователь не найден, я хочу вызвать ошибку HTTP и вернуть сообщение типа user not found
Что я уже пробовал:
user = User.query.get(id)
if user:
#do something
else
return {'status':'01', 'description': 'user not found'}
# or raise a http error
Проблема с этим подходом. Я не могу поддерживать приложение, над которым я работаю, оно потребует от меня изменения везде, где я использовал get_or_404 с этим кодом.
О чем я думаю:
Создание функции типа query.get_or_404
, но с другим сообщением о состоянии
например, query.get_or_415
и добавить обработчик ошибок для кода HTTP 415, чтобы, если объект не был найден, он мог вернуть {'status':'0message:ge : 'object of the class is not found'}
Как мне этого добиться?
Я проверил эту функцию во Flask, но не смог ее найти
Кто-нибудь с предложениями?