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

如何自定义Flask报错:JSON/POST body或查询字符串缺失必填参数

Flask自定义必填参数缺失错误返回格式方案

原抛出的错误英文提示为:Missing required parameter in the JSON body or the post body or the query string,对应中文含义为:JSON请求体、POST表单或查询字符串中缺少必填参数

实现步骤

  • 导入Flask核心对象、jsonify工具和Werkzeug提供的BadRequest异常类
  • 注册全局BadRequest异常处理器,匹配参数缺失的错误场景,返回自定义格式的JSON响应

完整代码示例

from flask import Flask, jsonify
from werkzeug.exceptions import BadRequest

app = Flask(__name__)

@app.errorhandler(BadRequest)
def handle_bad_request(error):
    error_content = str(error)
    # 匹配参数缺失的特定错误
    if "Missing required parameter" in error_content:
        # 提取缺失的参数名称
        missing_param = error_content.split("Missing required parameter ")[1].split(" in ")[0]
        # 按要求构造返回体,你可以自行修改自定义字段的内容
        return jsonify({
            "Error": f"{missing_param} 缺失",
            "Code": 10000,
            "操作提示": "请检查请求携带的参数是否完整"
        }), 400
    # 其他400类错误可按业务需求自定义返回
    return jsonify({
        "Error": "请求参数非法",
        "Code": 10001,
        "操作提示": "请核对请求格式与参数要求"
    }), 400

# 测试接口示例
@app.route('/test', methods=['POST'])
def test():
    from flask import request
    # required参数设为True时,未传参会自动抛出对应错误
    request.args.get('name', type=str, required=True)
    return jsonify({"status": "ok"})

if __name__ == '__main__':
    app.run(debug=True)

效果验证

调用测试接口不传name参数时,会返回如下格式的响应:

{
  "Error": "name 缺失",
  "Code": 10000,
  "操作提示": "请检查请求携带的参数是否完整"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 14:54:08