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データは
mimetype
JSON(application/json
を参照)を示す場合、.is_json
)。
request.get_json()
キーワード引数を渡すことで、コンテンツ タイプ要件をスキップするように指示できますforce=True
。
この時点で例外が発生した場合(400 Bad Request 応答が返される可能性があります)、JSONデータは無効であることに注意してください。何らかの不正な形式になっているため、JSON バリデータで確認することをお勧めします。