Javascript 使用主体解析器时,req.body返回未定义
我正在尝试构建一个API,该API接收POST req以创建用户,但是我的Javascript 使用主体解析器时,req.body返回未定义,javascript,node.js,express,Javascript,Node.js,Express,我正在尝试构建一个API,该API接收POST req以创建用户,但是我的req.body请求中都出现了未定义的错误。我的应用程序是这样设置的(为简洁起见进行了简化): 在我的用户路由文件中被Express Router调用的用户控制器 /controllers/user.js userController.addUser = function(req, res) { let user = new User(); user.username = req.body.username;
req.body
请求中都出现了未定义的错误。我的应用程序是这样设置的(为简洁起见进行了简化):
在我的用户路由文件中被Express Router调用的用户控制器
/controllers/user.js
userController.addUser = function(req, res) {
let user = new User();
user.username = req.body.username;
user.first_name = req.body.first_name;
user.last_name = req.body.last_name;
user.email = req.body.email;
user.type = req.body.user_type
// This returns undefined as does all other req.body keys
console.log("REQ.BODY.EMAIL IS: " + req.body.email);
}
用户路由文件:
/routes/user.js-需要上面的用户控制器
router.post('/user/create', userController.addUser);
主应用程序:
除使用req.body.*外,所有路由和控制器均按照我的测试工作
index.js-主应用程序文件
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use('/api', routes);
我浏览了Express文档和无数的StackOverflow帖子,但运气不佳。如果您需要进一步澄清,请告诉我 我的问题是如何将主体发送到API端点。我使用的是表单数据,而不是用邮递员编码的x-www-form-url。用户错误有时版本更改后的
主体解析器
似乎不起作用,在这种情况下,只需使用以下命令,这将从主体解析器
中删除依赖项:
router.post('/user/create', (req, res, next) => {
let body = [];
req.on('error', (err) => {
console.error(err);
}).on('data', (chunk) => {
// Data is present in chunks without body-parser
body.push(chunk);
}).on('end', () => {
// Finally concat complete body and will get your input
body = Buffer.concat(body).toString();
console.log(body);
// Set body in req so next function can use
// body-parser is also doing something similar
req.body = body;
next();
});
}, userController.addUser);
我们可以查看您的post请求吗?请尝试
console.log(req.body)
@sLaks我这样做了,这就是我发现它未定义的原因。我不确定是否有两个解析器在其中工作parallel@crescentfresh请同时将您的客户端代码发布到您的web服务器上。有可能你只是没有对请求进行任何设置。