Аксиос пост-параметры не отправляются - PullRequest
0 голосов
/ 19 февраля 2019

Я использую Axios в приложении реакции на доступ к API.Я пытаюсь опубликовать данные для входа на сервер, однако, когда я регистрирую тело запроса, все, что я получаю, это {}.

Вот запрос:

handleSubmit() {
    let email    = this.state.email
    let password = this.state.password

    request.post("/login",{email: email, password: password}) //just prints {} on the backend
    .then((results)=>console.log(results))
    .catch((err)=>console.log(err))
}  

Если я удаляюфигурные скобки и только что отправил строку, как hello в качестве теста я получаю { hello: '' } так ясно, что он работает.Я попробовал все на этом этапе, чтобы получить пользовательский ввод в поле, но не удалось.

Вот код сервера:

var app = express();
var bodyParser = require("body-parser");

app.use(bodyParser.urlencoded({
    extended: true
}));
app.post("/login",(req,res) => {
    console.log(req.body);
})

Мой API-интерфейс является сервером узла на порту4000 с использованием express.js

1 Ответ

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

Обновление : объект должен быть преобразован в строку запроса.Для этой цели вы можете использовать пакет qs .См. Обновленный код.

Поскольку вы используете промежуточное ПО body-parser s bodyParser.urlencoded, тип контента запроса должен быть установлен как 'x-www-form-urlencoded'.

import qs from "qs";

// ...

handleFormSubmit = event => {
    event.preventDefault();

    const requestBody = {
      email: this.state.email,
      password: this.state.password
    }

    const config = {
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
      }
    }

    request.post('/login', qs.stringify(requestBody), config)
    .then(res=>console.log(res))
    .catch(err=>console.log(err))
}
...