РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
61 of 643 menu

Метод on_json_loading_failed

Метод on_json_loading_failed применяется к объекту запроса request и вызывается автоматически, когда Flask не может разобрать JSON из тела запроса. Первым параметром метод принимает исключение, которое возникло при разборе. По умолчанию метод возвращает ответ с кодом 400 и сообщением об ошибке. Переопределив его в подклассе Request, можно вернуть собственный ответ.

Синтаксис

request.on_json_loading_failed(e)

Пример

Давайте посмотрим, как Flask ведёт себя при отправке некорректного JSON. Создадим приложение с маршрутом, который читает JSON из запроса:

from flask import Flask, request app = Flask(__name__) @app.route('/api', methods=['POST']) def api(): data = request.get_json() return {'received': data}

Если отправить запрос с телом abcde и заголовком Content-Type: application/json, то Flask вызовет on_json_loading_failed и вернёт ошибку:

Bad Request: The browser (or proxy) sent a request that this server could not understand.

Пример

Давайте переопределим метод on_json_loading_failed, чтобы возвращать собственное JSON-сообщение об ошибке. Для этого создадим подкласс Request и укажем его в приложении:

from flask import Flask, request, jsonify from werkzeug.exceptions import BadRequest class MyRequest(request.__class__): def on_json_loading_failed(self, e): return jsonify({'error': 'invalid json', 'detail': str(e)}), 400 app = Flask(__name__) app.request_class = MyRequest @app.route('/api', methods=['POST']) def api(): data = request.get_json() return {'received': data}

Теперь при отправке некорректного JSON клиент получит осмысленный ответ:

{"error": "invalid json", "detail": "..."}

Смотрите также

  • класс Request,
    который представляет объект запроса
  • метод get_json,
    который разбирает JSON из тела запроса
  • атрибут json,
    который содержит разобранный JSON
  • атрибут is_json,
    который проверяет тип содержимого запроса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить