Flask错误处理:“响应对象不可迭代”

时间:2013-06-17 18:09:28

标签: python rest curl flask

我正在尝试使用Flask设置REST Web服务。我遇到错误处理问题@app.errorhandler(404)

#!flask/bin/python
from flask import Flask, jsonify, abort

app = Flask(__name__)

@app.errorhandler(404)
def not_found(error):
    return jsonify({'error':'not found'}), 404

if __name__ == '__main__':
app.run(debug = True)

当我犯罪时,我什么都没得到。在我的调试器中,它告诉我我有一个TypeError: 'Response' object is not iterable

我在另一个方法中使用jsonify并且没有问题的字典,但是当我将其作为错误返回时,它不起作用。有什么想法吗?

2 个答案:

答案 0 :(得分:9)

from flask import Flask, jsonify

app = Flask(__name__)

@app.errorhandler(404)
def not_found(error):
    return jsonify({'error':'not found'}), 404

app.run()

使用上面的代码,curl http://localhost:5000/会给我:

{
  "error": "not found"
}

您使用的是flask.jsonify吗?

答案 1 :(得分:2)

正如前面答案的评论中所提到的,Flask 0.8不支持该代码,并且需要0.9或更高版本。如果您需要支持Flask 0.8,这里是一个兼容的版本,它指定了“status_code”:

@app.errorhandler(404)
def not_found(error):
    resp = jsonify({'error':'not found'})
    resp.status_code = 404
    return resp