使用 Flask 响应发送 JSON 和状态码 [重复]

Posted

技术标签:

【中文标题】使用 Flask 响应发送 JSON 和状态码 [重复]【英文标题】:Sending JSON and status code with a Flask response [duplicate] 【发布时间】:2018-01-06 19:26:11 【问题描述】:

我知道我可以使用Response(status=200) 设置响应的状态代码。设置状态码时如何返回 JSON 数据?

from flask import Flask, Response

@app.route('/login', methods=['POST'])
def login():
    response = Response(status=200)
    # need to set JSON like 'username': 'febin'
    return response

【问题讨论】:

【参考方案1】:

使用flask.jsonify()。此方法采用任何可序列化的数据类型。例如,我在以下示例中使用了字典 data

from flask import jsonify

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

要返回状态码,请返回响应和代码的元组:

return jsonify(data), 200

请注意,200 是默认状态代码,因此无需指定该代码。


更新

Flask 1.1 开始,return 语句将自动在第一个返回值中使用 jsonify 字典。可以直接返回数据:

return data

你也可以返回一个状态码:

return data, 200

【讨论】:

【参考方案2】:

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

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 参数定义。

【讨论】:

以上是关于使用 Flask 响应发送 JSON 和状态码 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

测开之路一百二十七:flask之构造response对象

flask入门

如何理解HTTP响应的状态码

Flask,如何为ajax调用返回成功状态码

Flask源码教程

2.5.4响应