Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 快速路线中的请求正文为空_Node.js_Express_Body Parser - Fatal编程技术网

Node.js 快速路线中的请求正文为空

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

我正在用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-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反映您要转到的路由


正文用于请求的有效负载,例如发布、修补和放置,提供有关服务器上更新或创建内容的信息。

您通过邮递员向服务器发送什么?您通过邮递员向服务器发送什么?谢谢,您说得对!我对请求参数感到困惑。谢谢,你说得对!我对请求参数感到困惑。