Node.js MySQL服务Postman POST请求报1048错误求助
解决Node.js MySQL服务POST请求参数为NULL的1048错误
问题分析
从错误信息和代码来看,核心问题是**req.body中的所有字段均为NULL**,导致SQL插入语句触发了MySQL的非空约束(Column 'fname' cannot be null)。本地MySQL客户端执行正常说明SQL逻辑和数据表结构无问题,故障点集中在Node.js服务对POST请求体的解析环节。
解决方案
1. 确保Express添加了请求体解析中间件
默认情况下,Express不会自动解析JSON或表单格式的请求体,必须手动添加以下中间件,否则req.body会是undefined或空对象,最终导致参数为NULL:
const express = require('express'); const app = express(); // 解析JSON格式的请求体 app.use(express.json()); // 解析URL编码的表单数据 app.use(express.urlencoded({ extended: true })); // 你的路由代码... app.get("/users", (req, res) => { /* ... */ }); app.post("/users", (req, res) => { /* ... */ });
2. 验证Postman的请求设置
确保Postman的请求配置与服务端解析逻辑匹配:
若使用JSON格式请求:
- 在Headers标签中设置
Content-Type: application/json - 在Body标签中选择
raw,格式切换为JSON,输入参数的JSON结构:{ "fname": "张三", "lname": "李四", "idnum": "10001", "phone": "13800138000", "email": "zhangsan@example.com" }
若使用表单格式请求:
- 在Body标签中选择
x-www-form-urlencoded或form-data,添加对应的键值对(键名需与req.body中的字段名完全一致:fname、lname等)
3. 额外排查点
- 检查路由路径是否正确,确保Postman请求的URL与服务端定义的
/users完全匹配 - 核对参数名拼写,确保Postman中的参数名和
req.body.fname等字段名无大小写或拼写错误
内容的提问来源于stack exchange,提问作者moshe mendel
相关产品推荐
相关产品推荐

