Node (экспресс) тело запроса пуст
Я работал над простым API, используя Node.JS и Restify сегодня, и все было в порядке с получением параметров через req.params.fieldname
. Я установил CouchDB и Cradle, чтобы начать пытаться перебросить эти параметры в базу данных, но после того, как все установлено, req.params начал возвращаться пустым!
Я должен был использовать Express для начала по другим причинам, поэтому я попытался переключиться на это, чтобы посмотреть, смогу ли я заставить его работать, но нет такой удачи.
var express = require('express');
var app = express.createServer();
app.configure(function(){
app.use(express.bodyParser());
app.use(express.cookieParser());
});
app.post('/', function(req, res){
res.send(req.body);
});
app.listen(8080, function() {
console.log('Printomatic listening at', app.url);
});
Я пробовал бесчисленные вариации, но независимо от того, что req.body возвращается пустым. Я использую http-console для тестирования и отправлю вещи так же просто, как POST /
с контентом {"name":"foobar"}
Я так расстроен, что в этот момент я начинаю задаваться вопросом, не сломал ли я что-то при установке Cradle/CouchDB (которые были установлены с NPM и Homebrew, соответственно). Любая помощь будет принята с благодарностью, так как это зависит от времени. Спасибо за любую помощь заранее!
Ответы
Ответ 1
Вы отмечаете, что вы публикуете данные JSON ({"name": "foobar"}
). Убедитесь, что вы отправили Content-Type: application/json
с этим, или bodyParser
не будет анализировать его.
например:.
$ curl -d 'user[name]=tj' http://local/
$ curl -d '{"user":{"name":"tj"}}' -H "Content-Type: application/json" http://local/
Это потому, что bodyParser
анализирует application/json
, application/x-www-form-encoded
и multipart/form-data
, и он выбирает, какой синтаксический анализатор следует использовать на основе Content-Type
.