Node.js 快速路线中的请求正文为空
我正在用Node.js、Express.js和MongoDB构建一个API。当我提交表单并在路由中使用Node.js 快速路线中的请求正文为空,node.js,express,body-parser,Node.js,Express,Body Parser,我正在用Node.js、Express.js和MongoDB构建一个API。当我提交表单并在路由中使用req对象时,req.body对象为空 req.body当我使用postman at通过浏览器调用get_user函数时,返回{} app.js: var express = require('express'), app = express(), port = process.env.PORT || 3000, bodyParser = require('body-pa
req
对象时,req.body
对象为空
req.body
当我使用postman at通过浏览器调用get_user
函数时,返回{}
app.js
:
var express = require('express'),
app = express(),
port = process.env.PORT || 3000,
bodyParser = require('body-parser');
var mongo_server = require('./server')
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
var routes = require('./routes/users')
routes(app);
app.use(function(req, res) {
res.status(404).send({url: req.originalUrl + ' not found'});
});
app.listen(port);
mongo_server.mongo_connection
module.exports = app;
var mongoose = require('mongoose'),
user = mongoose.model('users');
exports.get_user = function(req, res) {
console.log(req.body.id);
user.findById(req.body.id, function(err, user) {
console.log(req.body);
if(err)
res.send(err);
res.json(user);
});
};
module.exports = function(app) {
var users = require('../controllers/userController');
app.route('/users/:userid')
.get(users.get_user);
}
userController.js
:
var express = require('express'),
app = express(),
port = process.env.PORT || 3000,
bodyParser = require('body-parser');
var mongo_server = require('./server')
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
var routes = require('./routes/users')
routes(app);
app.use(function(req, res) {
res.status(404).send({url: req.originalUrl + ' not found'});
});
app.listen(port);
mongo_server.mongo_connection
module.exports = app;
var mongoose = require('mongoose'),
user = mongoose.model('users');
exports.get_user = function(req, res) {
console.log(req.body.id);
user.findById(req.body.id, function(err, user) {
console.log(req.body);
if(err)
res.send(err);
res.json(user);
});
};
module.exports = function(app) {
var users = require('../controllers/userController');
app.route('/users/:userid')
.get(users.get_user);
}
userRoutes.js
:
var express = require('express'),
app = express(),
port = process.env.PORT || 3000,
bodyParser = require('body-parser');
var mongo_server = require('./server')
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
var routes = require('./routes/users')
routes(app);
app.use(function(req, res) {
res.status(404).send({url: req.originalUrl + ' not found'});
});
app.listen(port);
mongo_server.mongo_connection
module.exports = app;
var mongoose = require('mongoose'),
user = mongoose.model('users');
exports.get_user = function(req, res) {
console.log(req.body.id);
user.findById(req.body.id, function(err, user) {
console.log(req.body);
if(err)
res.send(err);
res.json(user);
});
};
module.exports = function(app) {
var users = require('../controllers/userController');
app.route('/users/:userid')
.get(users.get_user);
}
我认为您混淆了请求参数和请求主体。请求主体是指当您将信息与请求一起发送(如有效负载)时,例如在POST请求中,当您向服务器发送JSON以创建新用户时:
{
"username": "jd123",
"email": "jd@example.com",
"name": "John Doe"
}
但在您的例子中,您正在查找参数,这些参数通过URL传递,就像您设置的:
/users/:userid
允许您通过GET请求导航到:
/users/0
然后,您可以从req.params.userid
而不是req.body.id
获取0作为字符串。请求参数和主体是不同的。参数用于导航到不同的路由,例如用户配置文件页面,其中URL会发生变化,并通过用户ID反映您要转到的路由
正文用于请求的有效负载,例如发布、修补和放置,提供有关在服务器上更新或创建内容的信息。我认为您混淆了请求参数和请求正文。请求主体是指当您将信息与请求一起发送(如有效负载)时,例如在POST请求中,当您向服务器发送JSON以创建新用户时:
{
"username": "jd123",
"email": "jd@example.com",
"name": "John Doe"
}
但在您的例子中,您正在查找参数,这些参数通过URL传递,就像您设置的:
/users/:userid
允许您通过GET请求导航到:
/users/0
然后,您可以从req.params.userid
而不是req.body.id
获取0作为字符串。请求参数和主体是不同的。参数用于导航到不同的路由,例如用户配置文件页面,其中URL会发生变化,并通过用户ID反映您要转到的路由
正文用于请求的有效负载,例如发布、修补和放置,提供有关服务器上更新或创建内容的信息。您通过邮递员向服务器发送什么?您通过邮递员向服务器发送什么?谢谢,您说得对!我对请求参数感到困惑。谢谢,你说得对!我对请求参数感到困惑。