2017-07-31 32 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

有什么区别?顺便说一句,你会如何包含这个状态? –