如何解决Debian Linux下Express向MySQL发送任意查询时报错的问题
问题排查与修复方案
错误原因定位
报错核心是Flask框架接收到POST请求后,尝试读取JSON格式请求体时,检测到请求的Content-Type头不是application/json类型,因此拒绝解析请求体返回400错误。
分步排查步骤
- 首先校验请求发送逻辑:检查发送POST请求的工具/代码是否正确设置了请求头
Content-Type: application/json- 如果你用curl测试,需要加上
-H "Content-Type: application/json"参数,示例命令:curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' 你的路由地址 - 如果你用前端代码发送请求,需要在请求配置中明确指定headers的Content-Type字段为application/json
- 如果你用curl测试,需要加上
- 其次校验请求体格式:确认发送的请求体是标准JSON格式,没有语法错误、多余的逗号或者引号不匹配的问题
- 最后添加代码兼容逻辑:如果业务场景需要支持非JSON格式的POST请求,可以调整代码做兼容处理,避免直接抛出400错误,示例兼容代码:
from flask import request, jsonify @app.route('/your-route', methods=['POST']) def your_handler(): # 先判断是否为JSON类型请求 if not request.is_json: return jsonify({"error": "请求格式必须为JSON"}), 400 # 再安全读取参数 param = request.json.get('param_name') if not param: return jsonify({"error": "缺少必填参数param_name"}), 400 # 后续业务逻辑
修复验证
调整完成后重新发送请求,确认服务端可以正常解析请求参数,不再返回400错误即可。
内容的提问来源于stack exchange,提问作者DadiT
相关产品推荐
相关产品推荐

