2017-02-12 5 views
1

У меня проблема с bodyparser, которую я не могу понять.Экспресс bodyParser не работает должным образом

Несколько недель назад я создал REST API с Express и использовал bodyParser для чтения данных JSON от клиента. Все работало хорошо, но сегодня утром я попытался запустить свое приложение, и все мои req.body.data не определены, на самом деле тело равно {}.

Вот моя конфигурация:

app.use(bodyParser.urlencoded({ extended: false })); 
app.use(bodyParser.json()); 

А затем настроить свои маршруты. Я видел, что вы должны объявить, что в этом порядке, т.е. bodyParser перед вашим маршрутом, и это то, что я делаю. Я думал, что это проблема с версией, но после нескольких обновлений проблема все еще присутствует.

Я использую HttpRequester для имитации клиента. Все прошло отлично до сегодняшнего утра.

Пример данных, отправленный:

{ 
    "username": "david", 
    "password": "bowie", 
    "email": "[email protected]" 
} 

Тогда этот код для ответа:

app.use(bodyParser.urlencoded({ extended: false })); 
app.use(bodyParser.json()); 
app.use(logger('dev')); 
app.use(expressValidator()); 
app.use(cookieParser()); 

app.use('/users', users); 

тогда у пользователей я просто создать пользователь:

// Creation of a user. 
router.post('/create', function(req, res) { 

    // We check current mistakes like username or password empty. 
    if (!userhelper.checkCreateUserRequest(req, res)) { 
    return; 
    } 

    // Save the user in BDD 
} 

В checkCreateUserRequest Я делаю это:

if (req.body.username == null || req.body.password == null ||  req.body.email == null) { 
res.status(400).json({message: "malformed request", code: 1}); 
return false; 

}

я делать другие вещи, как проверка, если имя пользователя пуст, например, но я не думаю, что это важно, чтобы вставить его.

Спасибо за ваши ответы и извините за мой плохой английский ...

+0

Могли бы вы добавить фрагмент кода с примером данных, которые вы отправляете, пожалуйста? –

+0

Спасибо за ваш ответ, я обновил сообщение – xavatic

ответ

2

Вы можете установить правильный заголовок HTTP, если вы используете запрос JSON.

Content-Type: применение/JSON

+0

Вы правы, после некоторого расследования я обнаружил, что мой клиент REST не настроен должным образом. Я использую аддон по умолчанию, предоставляемый firefox, и я думаю, что я не настроил его правильно. С почтальоном и угловым применением он работает. Спасибо за Ваш ответ – xavatic