REST api中的普通(非HTML)错误页面

时间:2012-12-13 11:06:27

标签: python rest flask

我正在使用Flask编写一个简单的REST服务。当我的代码中发生异常时,我在浏览器中收到一条很好的错误消息和一个交互式调试器。但是,如果我从命令行调用服务(例如使用curl),或者在我的单元测试中,并且某些操作失败,我仍然会收到格式化的(HTML)错误消息。我记得我有时会得到一条纯文本消息(基本上只是Python错误+追溯),我不知道Flask如何决定提供纯文本或HTML。

如何在没有浏览器的情况下访问Flask时返回普通(非交互式,非HTML)错误消息?

2 个答案:

答案 0 :(得分:5)

要在生产模式下处理异常,请为500状态代码注册错误处理程序。从它你可以返回任何你想要的东西。这是一个将异常本身作为纯文本返回的示例:

@app.errorhandler(500)
def error_500(exception):
    return str(exception), 500, {'Content-Type': 'text/plain'}

如果您正在编写API,则将{JSON编码数据作为application/json返回可能更合适。

答案 1 :(得分:4)

设置app.debug = False以关闭花哨的错误报告。调试模式documentation有更多。