7

我正在尝试使用 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在另一种方法中使用字典没有问题,但是当我将其作为错误返回时,它不起作用。有任何想法吗?

4

2 回答 2

10
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吗?

于 2013-06-17T18:37:48.070 回答
4

如前一个答案的评论中所述,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
于 2014-01-02T20:20:18.423 回答