Flask:通过Response对象发送数据和状态代码

Feb*_*ter 16 json response flask

我正在Flask中编写微服务,通过API互相交流.

在发出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
Run Code Online (Sandbox Code Playgroud)

Nab*_*bin 43

只需使用刻录包中的jsonify()即可.此方法采用任何可序列化的数据类型(例如,我在以下示例中使用了字典数据).

from flask import jsonify

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

要返回状态代码,只需在返回结束时返回,如下所示:

return jsonify(data), 200
Run Code Online (Sandbox Code Playgroud)

  • PyCharm抱怨“预期的类型响应,取而代之的是元组”。为了消除警告,使用`return make_response(jsonify(data),200)`。 (2认同)

Lau*_*ius 7

您可以像这样将数据追加到响应中:

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
Run Code Online (Sandbox Code Playgroud)

响应数据内容类型由mimetype参数定义。