Я не могу получить данные из запроса JSON - PullRequest
0 голосов
/ 03 июня 2019

Я отправляю данные JSON на маршрут:

 const data=[{name:this.name}]
                //qs.stringify(payload)
                axios
                    .post('/users',{name:this.name})
                    .then(
                        response => {
                               console.log(response.data);
                        }
                    )
                    .catch(
                        // error=>console.log(error)
                    )

И попробуйте получить данные:

router.post('/', function (req, res, next) {
        var data = req.body; // here is your data
        var obj=JSON.parse(data);
        console.log(obj.toString());
        res.toString("ok");
    });

И я получил ошибку 500. Почему бы не получить данные?

1 Ответ

0 голосов
/ 03 июня 2019

Ваш код на стороне клиента в порядке, за исключением того, что константа с именем data полностью не используется.Однако на стороне сервера req.body почти наверняка содержит разобранный объект JSON (при условии, что вы уже включили промежуточное программное обеспечение для анализа тела).Если вы не включили промежуточное программное обеспечение для анализа тела, тогда req.body будет равно undefined.

. Кроме того, метод toString() в res не отправляет никакого ответа, он просто возвращает строковое представлениеответа.

Вам потребуется внести следующие изменения в код:

  1. Включить промежуточное программное обеспечение для разбора тела (например, body-parser) в цепочку экспресс-промежуточного программного обеспечения, если ононе включены.

  2. Не звоните JSON.parse(req.body).body-parser уже сделал бы это.Повторный вызов вызовет только исключение и вернет 500.

  3. Чтобы преобразовать объект в строку JSON, используйте метод JSON.stringify().obj.toString(), вероятно, вернет только [object Object].

  4. Отправить ответ одним из методов .send(), .json(), .end() в res.Поскольку вам нужно отправить строку назад, res.send("ok") кажется наиболее подходящим.

Измененный код должен выглядеть примерно так:

router.post('/', function (req, res, next) {
    var data = req.body; // here is your data
    console.log(JSON.stringify(data));
    res.send("ok");
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...