You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask如何全局配置abort函数返回纯文本错误而非HTML格式

Flask全局修改abort返回纯文本格式的实现方案

Flask中abort触发的所有错误本质都是HTTPException类的子类实例,你可以直接注册全局的HTTPException异常处理器,一次性捕获所有4xx、5xx错误,无需逐个配置错误码,统一返回纯文本格式:

from flask import Flask, abort, Response, HTTPException

app = Flask(__name__)

# 全局捕获所有HTTP异常,统一处理返回格式
@app.errorhandler(HTTPException)
def handle_all_http_error(e):
    # e.description就是你调用abort时传入的第二个参数errMsg
    # e.code是对应的错误状态码
    return Response(
        response=e.description,
        status=e.code,
        mimetype="text/plain"
    )

# 测试示例
@app.route("/api/<res_id>")
def get_resource(res_id):
    if not res_id.isdigit():
        abort(400, "资源ID必须为数字")
    if int(res_id) > 1000:
        abort(404, "请求的资源不存在")
    return {"data": "test"}

效果验证

调用abort(404, "请求的资源不存在")时,返回的响应如下:

  • 状态码:404
  • Content-Type:text/plain
  • 响应体:请求的资源不存在

完全没有预置的HTML模板内容,符合API接口的返回要求。

扩展说明

如果后续需要改为JSON格式的错误返回,只需要修改处理器的返回逻辑即可:

from flask import jsonify

@app.errorhandler(HTTPException)
def handle_all_http_error(e):
    return jsonify({
        "code": e.code,
        "msg": e.description
    }), e.code

内容的提问来源于stack exchange,提问作者Jordan Barrett

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 17:06:05