Запрос Node.js работает с модулем request, но не с axios - PullRequest
0 голосов
/ 20 октября 2019

Я пытаюсь сделать запрос с axios на сервер. Проблема в том, что мой запрос работает нормально с модулем запроса, но не с axios. Мой код выглядит так:

const axios = require('axios');

axios.post('https://mydomain/api/login', {
  username: 'test@gmail.com', 
  password: '123'
})
.then(function (response) {
  console.log(response.data);
})
.catch(function (error) {
  console.log(error);
});

Ответ от сервера:

{ response: 'Error', error_message: 'Invalid credentials' } 

Я делаю тот же запрос с теми же учетными данными, но с модулем запроса, и он работает просто отлично.

var request = require("request");

var options = { 

  method: 'POST',
  url: 'https://mydomain/api/login',
  formData: { username: 'test@gmail.com', 
              password: '123' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Ответ от сервера:

{"response": "Successfully authenticated.", "email": "test@gmail.com",}

Я что-то упустил?

Ответы [ 3 ]

1 голос
/ 20 октября 2019

вы отправляете кредит в теле с аксиосами

axios.post('https:mydomain/api/login', {
  username: 'test@gmail.com', 
  password: '123'
})

, но с модулем запроса вы отправляете его с данными формы:

var options = { 

  method: 'POST',
  url: 'https:mydomain/api/login',
  formData: { username: 'test@gmail.com', 
              password: '123' } };
1 голос
/ 20 октября 2019

Проверьте заголовок вашего запроса на Content-Type.

Возможно, вам потребуется установить конфигурацию axios для заголовка запроса POST Content-Type. Это означает, что заголовок должен быть:

Content-Type: application/json.

Это известная проблема с Axios, описанная в этом посте: Axios против запроса

0 голосов
/ 24 октября 2019

Я нашел решение:

const axios = require('axios');
var querystring = require('querystring');
axios.post('https://mydomain/api/login', querystring.stringify({username: 'test@gmail.com', password: '123' }))
.then(function (response) {
  console.log(response);
})
.catch(function (error) {
  console.log(error);
});

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