2016-04-19 3 views
0

Запрос content-type - application/json, но я хочу получить байты тела запроса. Flask автоматически преобразует данные в json. Как получить тело запроса?Как получить байты тела запроса в Flask?

+0

Почему вы думаете, что Flask автоматически преобразует тело запроса в JSON? Это определенно не делает, хотя в нем есть способ сделать это вручную. – davidism

ответ

1

Вы можете кодировать свой ответ на определенный набор символов, если это то, что вы ищете

from flask import request 

Python3

bytes(request.data, "utf8") 

python2

request.data("utf8") 
0

Я стараюсь это:

request.input_stream.seek(0) 
print request.input_stream.read() 
+0

Как правило, это плохая идея для чтения из 'input_stream' напрямую, так как она не гарантируется, что ее можно искать и не читать без ограничений (в зависимости от реализации WSGI и данных запроса). 'stream' является более безопасным, но его следует избегать, поскольку он истощает поток, предотвращающий правильное заполнение запроса. – davidism

1

Вы можете получить данные, не связанные с формой, по телефону request.get_data(). Вы можете получить данные анализируемой формы, обратившись к request.form и request.files.

Однако порядок, в котором вы получаете доступ к этим двум, изменит то, что возвращается с get_data. Если вы сначала его вызовете, он будет содержать полный орган запроса, включая данные необработанной формы. Если вы назовете его вторым, оно будет пустым, и будет заполнено form. Если требуется согласованное поведение, вызовите request.get_data(parse_form_data=True).

Вы можете получить тело, обработанное как JSON, используя request.get_json(), но это не происходит автоматически, как ваш вопрос.

Для получения дополнительной информации см. Документы на странице dealing with request data.

Смежные вопросы