最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

无法使用 Express.js 从请求中获取 POST 正文

IT培训 admin 12浏览 0评论

无法使用 Express.js 从请求中获取 POST 正文

我正在使用 NodeJS 和 Express(以及更多东西,如 mongo、sockets 等)开发一个 API,但我认为我被困在一个非常简单的步骤上。我只是想从 POST

req
对象中获取信息,但是在尝试访问
req.body

时出现错误

这是我所拥有的:

var express     = require('express'),
    http        = require('http'),
    path        = require('path'),
    fs          = require('fs'),
    io          = require('socket.io');
    dynroute    = require('dynroute');

var app = express();
app.set('port', process.env.PORT || 3999);
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(app.router);
app.use(express.bodyParser());

app.post('/user', function(req, res) {

    console.log(JSON.stringify(req.body));
    res.send(req.body.self);
});

http.createServer(app).listen(app.get('port'), function ()
{
    console.log('App Server is now running at:' + app.get('port'));     
});

console.log(JSON.stringify(req.body));
我得到
undefined
res.send(req.body.self);
我得到
TypeError: Cannot read property 'self' of undefined

我一直在寻找这种类型的错误,通常问题是人们不包括

app.use(express.bodyParser());
中间件,所以我也尝试使用
app.use(express.urlencoded());
app.use(express.json());
,这也没有用。

如果我执行

console.log(req)
我可以看到整个对象,但我看不到
body
或我在从客户端执行 POST 请求时传递的任何内容(我将其作为 JSON 传递) .

**我知道我可以使用

restify
sails.js
在 Node 中构建 API,但我想自己做所有事情,这样我就可以从经验中学习。*

谢谢

编辑: 我必须将

bodyparser
中间件放在
app.router
中间件之前,这样就解决了!

回答如下:

bodyParser
中间件移动到
router
中间件之上!

var app = express();
app.set('port', process.env.PORT || 3999);
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(app.router);

无法使用 Express.js 从请求中获取 POST 正文

我正在使用 NodeJS 和 Express(以及更多东西,如 mongo、sockets 等)开发一个 API,但我认为我被困在一个非常简单的步骤上。我只是想从 POST

req
对象中获取信息,但是在尝试访问
req.body

时出现错误

这是我所拥有的:

var express     = require('express'),
    http        = require('http'),
    path        = require('path'),
    fs          = require('fs'),
    io          = require('socket.io');
    dynroute    = require('dynroute');

var app = express();
app.set('port', process.env.PORT || 3999);
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(app.router);
app.use(express.bodyParser());

app.post('/user', function(req, res) {

    console.log(JSON.stringify(req.body));
    res.send(req.body.self);
});

http.createServer(app).listen(app.get('port'), function ()
{
    console.log('App Server is now running at:' + app.get('port'));     
});

console.log(JSON.stringify(req.body));
我得到
undefined
res.send(req.body.self);
我得到
TypeError: Cannot read property 'self' of undefined

我一直在寻找这种类型的错误,通常问题是人们不包括

app.use(express.bodyParser());
中间件,所以我也尝试使用
app.use(express.urlencoded());
app.use(express.json());
,这也没有用。

如果我执行

console.log(req)
我可以看到整个对象,但我看不到
body
或我在从客户端执行 POST 请求时传递的任何内容(我将其作为 JSON 传递) .

**我知道我可以使用

restify
sails.js
在 Node 中构建 API,但我想自己做所有事情,这样我就可以从经验中学习。*

谢谢

编辑: 我必须将

bodyparser
中间件放在
app.router
中间件之前,这样就解决了!

回答如下:

bodyParser
中间件移动到
router
中间件之上!

var app = express();
app.set('port', process.env.PORT || 3999);
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(app.router);
发布评论

评论列表 (0)

  1. 暂无评论