我正在使用 Flask 编写一个简单的 REST 服务。当我的代码中出现异常时,我会在浏览器中收到一条很好的错误消息和一个交互式调试器。但是,如果我从命令行(例如使用 curl)或在我的单元测试中调用该服务,并且某些东西失败了,我仍然会收到格式化的 (HTML) 错误消息。我记得我有时会收到一条纯文本消息(基本上只是 Python 错误 + 回溯),我不知道 Flask 是如何决定提供纯文本或 HTML 的。
如何让 Flask 在没有浏览器访问时返回纯(非交互式、非 HTML)错误消息?
最佳答案
要在生产模式下处理异常,请为 500 状态代码注册错误处理程序。从它你可以返回任何你想要的。下面是一个将异常本身作为纯文本返回的示例:
@app.errorhandler(500)
def error_500(exception):
return str(exception), 500, {'Content-Type': 'text/plain'}
如果您正在编写的是 API,返回 JSON 编码数据作为 application/json
可能更合适。
关于python - REST api 中的普通(非 HTML)错误页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13858509/