Подтвердить что ты не робот

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, соответственно). Любая помощь будет принята с благодарностью, так как это зависит от времени. Спасибо за любую помощь заранее!

4b9b3361

Ответ 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.