2017-07-31 31 views
1

我正在Flask中編寫微服務,它們通過API相互交互。通過Python中的響應對象發送數據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 

回答

5

只需使用燒瓶包裝中的jsonify()即可。 此方法採用任何可序列化的數據類型(例如,在以下示例中,我使用了數據)。

from flask import jsonify 

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

要返回一個狀態代碼,只需在下面的回覆結束返回它:

return jsonify(data), 200 
1

可以將數據附加到這樣的響應:

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 

響應數據的內容類型是由MIME類型參數定義。

+1

非常感謝你。它被接收爲json.loads(response.content) –

+0

不要像這樣手動構建JSON響應。這就是'jsonify'的用途。 – davidism

+0

有什麼區別?順便說一句,你會如何包含這個狀態? –