如何自定义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
相关产品推荐
相关产品推荐

