2016-04-19 33 views
0

リクエストのcontent-typeapplication/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.formrequest.filesにアクセスすると、解析されたフォームデータを取得できます。

ただし、これらの2つにアクセスする順序によって、返される内容はget_dataに変更されます。最初に呼び出すと、生のフォームデータを含む完全な要求本体が含まれます。 2番目に呼び出すと、通常は空になり、formが入力されます。一貫した動作が必要な場合は、request.get_data(parse_form_data=True)に電話してください。

request.get_json()を使用して本文をJSONとして解析することはできますが、質問に示されるように自動的には発生しません。

詳細については、dealing with request dataのドキュメントを参照してください。

関連する問題