Метод get_data
Метод get_data применяется к объекту запроса request в Flask и возвращает тело HTTP-запроса в виде байтовой строки. Первым параметром можно передать флаг cache, который указывает, нужно ли кэшировать прочитанные данные (по умолчанию True). Вторым параметром передаётся as_text - если установить True, метод вернёт строку вместо байтов. Третьим параметром идёт parse_form_data, который определяет, нужно ли разбирать данные формы (по умолчанию False).
Метод полезен, когда нужно получить именно сырое тело запроса, например при работе с нестандартными форматами данных, вебхуками или при отладке.
Синтаксис
request.get_data(cache=True, as_text=False, parse_form_data=False)
Пример
Давайте создадим приложение, которое принимает POST-запрос и возвращает его тело в виде строки:
from flask import Flask, request
app = Flask(__name__)
@app.route('/data', methods=['POST'])
def data():
raw = request.get_data(as_text=True)
return raw
Результат выполнения кода для тела запроса 'abcde':
abcde
Пример
Давайте посмотрим, как выглядит результат без параметра as_text - метод вернёт байты:
from flask import Flask, request
app = Flask(__name__)
@app.route('/raw', methods=['POST'])
def raw():
data = request.get_data()
return str(data)
Результат выполнения кода для тела запроса 'abcde':
b'abcde'
Пример
Давайте отключим кэширование данных, чтобы прочитать тело запроса повторно:
from flask import Flask, request
app = Flask(__name__)
@app.route('/nocache', methods=['POST'])
def nocache():
first = request.get_data(cache=False, as_text=True)
second = request.get_data(cache=False, as_text=True)
return first + ' ' + second
Результат выполнения кода для тела запроса 'user':
user user