1. ホーム
  2. python

[解決済み] FlaskでPOSTされたJSONを取得する方法とは?

2022-03-22 10:27:34

質問

Flaskを使って簡単なAPIを作ろうとしているのですが、その中でPOSTされたJSONを読みたいと考えています。私はPostman ChromeエクステンションでPOSTを行い、私がPOSTしたJSONは単純なものです。 {"text":"lalala"} . 以下の方法でJSONを読み込もうとしています。

@app.route('/api/add_message/<uuid>', methods=['GET', 'POST'])
def add_message(uuid):
    content = request.json
    print content
    return uuid

ブラウザ上では、私がGETで入力したUUIDが正しく返されますが、コンソール上では、次のように出力されるだけです。 None (を出力すると思っていたところ {"text":"lalala"} . どなたか、Flaskのメソッド内から投稿されたJSONを取得する方法をご存知でしょうか?

どのように解決するのですか?

まず最初に .json 属性は request.get_json() メソッド と表示されるのは、そのためです。 None ここで

リクエストコンテンツタイプを application/json には .json プロパティと .get_json() メソッド (引数なし) を使用すると、どちらかのメソッドで None でなければ を参照してください。 フラスコ Request ドキュメント :

mimetypeがJSONを示す場合、パースされたJSONデータが格納されます( アプリケーション/json を参照してください。 is_json() になります)、それ以外の場合は None .

を伝えることができます。 request.get_json() を渡すことで、コンテンツタイプの要件をスキップすることができます。 force=True キーワード引数で指定します。

ただし 例外 がこの時点で発生した場合 (400 Bad Request レスポンスが発生する可能性があります)、JSON の データ は無効です。JSONバリデーターでチェックするとよいでしょう。