web-dev-qa-db-ja.com

Flask:Responseオブジェクトを介してデータとステータスコードを送信する

APIを介して相互作用するマイクロサービスをFlaskで記述しています。

POSTリクエストを作成すると、Responseオブジェクトを介してステータスコードを返すことができます。この関数からJSONとしてデータを返す方法はありますか?

from flask import Flask, Response

@app.route('/login', methods=['POST'])
def login():
   # Set the status code
   response = Response(status=200)

   # How can I return a JSON in my response object as {'username': 'febin'} ?

   return response
14
Febin Peter

jsonify() from flask package。このメソッドは任意のシリアル化可能なデータ型を取ります(たとえば、辞書data次の例では)。

from flask import jsonify

@app.route('/login', methods=['POST'])
def login():
    data = {'name': 'nabin khadka'}
    return jsonify(data)

ステータスコードを返すには、以下のようにリターンの最後にそれを返すだけです:

return jsonify(data), 200
39
Nabin

次のように、応答にデータを追加できます。

from flask import Flask, json

@app.route('/login', methods=['POST'])
def login():
    data = {"some_key":"some_value"} # Your data in JSON-serializable type
    response = app.response_class(response=json.dumps(data),
                                  status=200,
                                  mimetype='application/json')
    return response

応答データのコンテンツタイプは、mimetypeパラメーターによって定義されます。