1. ホーム
  2. python

[解決済み] Python Flask で Content-Type ヘッダに関係なく生の POST ボディを取得する

2022-04-28 02:32:58

質問

以前、私は次のように尋ねました。 Flaskのリクエストで受信したデータを取得する方法 というのも request.data が空だった。回答では次のように説明されていました request.data は生の投稿本文ですが、フォームデータが解析されると空になってしまいます。 どうすれば無条件に生の投稿本文を取得できるのでしょうか?

@app.route('/', methods=['POST'])
def parse_request():
    data = request.data  # empty in some cases
    # always need raw data here, not parsed form data

解決方法は?

使用方法 request.get_data() を使用すると、コンテンツタイプに関係なく生のデータを取得することができます。このデータはキャッシュされ、その後に request.data , request.json , request.form を任意に設定することができます。

にアクセスすると request.data を最初に呼び出すと、それは get_data を引数にとり、フォームデータを最初にパースします。もしリクエストがフォームのコンテントタイプ ( multipart/form-data , application/x-www-form-urlencoded または application/x-url-encoded ) の場合、生データが消費されます。 request.datarequest.json はこの場合、空白に表示されます。