Я работаю над API с NodeJS и Express (и больше таких вещей, как 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'));
});
На 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());
, также не работал.
Если я делаю a console.log(req)
, я могу видеть весь объект, но я не вижу body
или любого содержимого, которое я передаю при выполнении запроса POST от клиента (я передаю его как JSON).
* Я знаю, что мог бы использовать restify
или sails.js
для создания API в Node, но я хочу делать все самостоятельно, поэтому я могу извлечь уроки из опыта.
Спасибо
EDIT:
Мне пришлось установить промежуточное ПО bodyparser
перед промежуточным программным обеспечением app.router
, которое исправит его!