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

Атрибут is_json

Атрибут is_json применяется к объекту запроса request и возвращает булево значение. Он равен True, если заголовок Content-Type запроса указывает на тип application/json или application/*+json, иначе возвращается False. Атрибут не читает тело запроса и не разбирает его, а только проверяет заголовки.

Атрибут не принимает параметров и доступен только для чтения. Его удобно использовать перед вызовом метода get_json, чтобы избежать исключения при попытке разобрать данные неверного типа.

Синтаксис

request.is_json

Пример

Давайте отправим на сервер данные в формате JSON и проверим атрибут is_json:

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

Отправим запрос с заголовком Content-Type: application/json:

curl -X POST http://localhost:5000/api -H "Content-Type: application/json" -d '{"name": "abcde"}'

Результат выполнения кода:

{"received": {"name": "abcde"}}

Пример

А теперь отправим обычные данные формы и убедимся, что атрибут вернёт False:

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

Отправим запрос с типом application/x-www-form-urlencoded:

curl -X POST http://localhost:5000/api -d "name=abcde"

Результат выполнения кода:

{"error": "not json"}

Пример

Атрибут is_json также возвращает True для заголовков вида application/*+json. Давайте проверим это с типом application/vnd.api+json:

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

Отправим запрос с типом application/vnd.api+json:

curl -X POST http://localhost:5000/check -H "Content-Type: application/vnd.api+json" -d '{"id": 1}'

Результат выполнения кода:

{"is_json": true}

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

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