我正在尝试使用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",}
我想念什么吗?
答案 0 :(得分:1)
检查您的请求标头中是否有Content-Type
。
您可能需要为POST请求标头Content-Type
设置axios配置。这意味着标题应该是:
Content-Type: application/json
。
这是Axios的一个已知问题,如本博文所述: Axios vs Request
答案 1 :(得分:1)
您正在使用axios在体内发送功劳
axios.post('https:mydomain/api/login', {
username: 'test@gmail.com',
password: '123'
})
,但是使用请求模块,您将其与formData发送:
var options = {
method: 'POST',
url: 'https:mydomain/api/login',
formData: { username: 'test@gmail.com',
password: '123' } };
答案 2 :(得分:0)
我找到了解决方法:
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);
});