kev*_*nco 26 javascript json node.js express sails.js
我正在研究一个带有NodeJS和Express的API(以及更多东西,如mongo,套接字等),但我坚持一个非常简单的步骤,我相信,我只是想从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'));
});
Run Code Online (Sandbox Code Playgroud)
在console.log(JSON.stringify(req.body));我得到undefined和res.send(req.body.self);我得到TypeError: Cannot read property 'self' of undefined
我已经seaching这种类型的错误,通常的问题是,人们不包括app.use(express.bodyParser());中间件,我还使用tryied app.use(express.urlencoded());和app.use(express.json());,也没有任何工作.
如果我这样做,console.log(req)我可以看到整个对象但我无法看到body或从客户端执行POST请求时传递的任何内容(我将其作为JSON传递).
*我知道我可以在Node中使用restify或sails.js构建API,但我希望自己做所有事情,以便我可以从经验中学习.
谢谢
编辑:
我不得不把bodyparser中间件放在中间件之前app.router,修复它!
Ren*_*ama 32
将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);
Run Code Online (Sandbox Code Playgroud)
Content-Type = "application/json" 应该是其中之一 Request Headers
小智 5
BodyParser 不再与 Express 捆绑在一起
npm install body-parser
var bodyParser = require("body-parser");
app.use(bodyParser.urlencoded({ extended: false }));
Run Code Online (Sandbox Code Playgroud)