【问题标题】:Plain (non-HTML) error pages in REST apiREST api 中的普通(非 HTML)错误页面
【发布时间】:2012-12-01 06:20:04
【问题描述】:

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

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

【问题讨论】:

    标签: python rest flask


    【解决方案1】:

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

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

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

    【讨论】:

    • 关于 JSON 输出,您需要照常进行 jsonify:return jsonify({"error": str(exception)}), 500, {'Content-Type': 'application/json'}
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2021-04-09
      • 1970-01-01
      • 1970-01-01
      • 2014-03-27
      • 1970-01-01
      • 2015-08-06
      • 2013-06-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多