Неопределенное тело в Node / Express API с использованием bodyParser при доступе через fetch или axios - PullRequest
0 голосов
/ 21 февраля 2019

Я выполняю вызов API в Node / Express в приложении React, и независимо от того, где я выполняю вызов fetch / axios, мое проанализированное тело отображается как неопределенное в моем контроллере.Я потратил вчера на работу с fetch, но попробовал axios для изменения сегодня, и вот запрос:

axios({
    method: 'post',
    url: 'http://localhost:3000/users/sign_in',
    data: {
        email: "matthewharp@gmail.com",
        password: "xxxxxxx"
    }
})
    .then(data => console.log(data))
    .catch(err => console.log(err));

Теперь вот сложная часть: console.log() операторы в контроллере Node И файл запроса делают триггерТаким образом, нет проблем с маршрутизацией, и когда я настраиваю файл запроса на случайную отправку ресурса, игнорируя предполагаемую логику поиска по полю тела, все возвращается нормально.Но и выборка, и axios приводят к undefined значениям для req.body и любым атрибутам в них.Например, это действие в контроллере:

signIn(req, res, next) {
    let user = {
        email: req.body.email,
        password: req.body.password
    };
    console.log("1: " + Object.keys(req.body));
    console.log("2: " + req.body.email);
}

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

1: [object Object]
2: undefined

Но вызов Object.keys() для рассматриваемого объекта возвращаетпустая строка.

Я использую bodyParser, но, как указывали другие вопросы, это должно быть инициализировано перед любым объявлением маршрута - что я делаю (я абстрагировал конфигурацию в файл main-config.js иroute-config.js файлов, а main содержит bodyParser и инициализируется первым).

Я был бы очень признателен за любую помощь и с радостью предоставит больше информации и фрагментов кода.

Редактировать: API-кодhttps://github.com/RainyDayMatt/abbas-tables-node-express-api/tree/mrh-add-user-code

1 Ответ

0 голосов
/ 21 февраля 2019

Итак, я реализовал bodyParser не полностью.Я настроил app.use(bodyParser.urlencoded({extended: true})) при инициализации основного файла конфигурации, но не app.use(bodyParser.json()).

...