FlaskでPOSTされたJSONを取得するにはどうすればいいですか?質問する

FlaskでPOSTされたJSONを取得するにはどうすればいいですか?質問する

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"}。投稿された JSON を Flask メソッド内から取得する方法を知っている人はいますか?

ベストアンサー1

まず、.json属性は、request.get_json()方法ここに表示されている理由を文書化しますNone

application/jsonプロパティ.json.get_json()メソッド(引数なし)が機能するには、リクエストコンテンツタイプを に設定する必要がありますNone。そうしないと、どちらかが生成します。FlaskRequestドキュメント:

解析されたJSONデータはmimetypeJSON(application/jsonを参照)を示す場合、.is_json)。

request.get_json()キーワード引数を渡すことで、コンテンツ タイプ要件をスキップするように指示できますforce=True

この時点で例外が発生した場合(400 Bad Request 応答が返される可能性があります)、JSONデータは無効であることに注意してください。何らかの不正な形式になっているため、JSON バリデータで確認することをお勧めします。

おすすめ記事