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

标签 python rest flask

我正在使用 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/

相关文章:

python - Flask和Scrapy如何整合?

python - 如何使用 Flask 框架点击 html 按钮在后台运行 python 脚本

python - 使用平均阈值过滤数据帧

php - mod_php 与 mod_python

python - 有效地确定超出后续数字范围的数字是否在有序列表中。 (在 Python 中)

c++ - 从 CPPRest 库(即 casablanca)获得的结果中提取基本 STL 字符串?

java - HttpServletResponse 到 javax.ws.rs.core.Response

python - 如何解决 PyCharm 中的 "Invalid Python interpreter name ' python.exe'!"错误

django - Odoo 大规模部署

python - 如何从模型生成的表单中指定我想要的小部件(例如 TextArea 而不是简单的文本输入)? flask SQLAlchemy WTForms