Узел (экспресс) тело запроса пусто - PullRequest
24 голосов
/ 28 марта 2012

Сегодня вечером я работал над простым API с использованием Node.JS и Restify, и у меня все было хорошо с точки зрения получения параметров через req.params.fieldname.Я установил CouchDB и Cradle, чтобы начать пытаться выбросить эти параметры в базу данных, но после того, как все было установлено, req.params начал возвращаться пустым!, поэтому я попытался переключиться на это, чтобы посмотреть, смогу ли я заставить его работать, но не такая удача.

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);
});

Я пробовал бесчисленные варианты, но независимо от того, что требуется, тело возвращается пустым.Я использую http-консоль для тестирования и отправляю такие простые вещи, как POST / с контентом {"name":"foobar"}

Я так расстроен, что в этот момент начинаю задумываться, не сломал ли я что-тоустановка Cradle / CouchDB (которые были установлены с NPM и Homebrew соответственно).Любая помощь будет принята с благодарностью, так как она чувствительна ко времени.Спасибо за любую помощь заранее!

1 Ответ

71 голосов
/ 28 марта 2012

Вы упоминаете, что публикуете данные 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...