我尝试使用axios通过this documentation向Amadeus请求授权令牌。但是,我对axios库非常缺乏经验,因此无法正确构建请求,因为我得到了以下响应:
code: 38187
error: "invalid_request"
error_description: "Mandatory grant_type form parameter missing"
title: "Invalid parameters"
奇怪的是,我尝试用curl模拟同样的请求,它成功了,所以我真的很困惑我的错误在哪里。
curl -v "https://test.api.amadeus.com/v1/security/oauth2/token"
-H "Content-Type: application/x-www-form-urlencoded"
-d "grant_type=client_credentials&client_id=xxxxxx&client_secret=xxxxxx"
这是我的JavaScript代码,如果你能注意到不同之处,请告诉我!提前感谢
async getAmadeusKey() {
const response = await axios({
url: "https://test.api.amadeus.com/v1/security/oauth2/token",
method: 'post',
headers: {
'Content-Type': 'x-www-form-urlencoded'
},
data: {
grant_type: 'client_credentials',
client_id: CLIENT_ID, // of course both these constants are defined outside of this scope
client_secret: CLIENT_SECRET,
}
});
console.log(response.data);
}
编辑:我的头有一个错误,但是即使在应用了下面建议的修复后,响应错误地识别了我的请求中的错误。
1条答案
按热度按时间6yjfywim1#
默认情况下,axios将
data
参数序列化为JSON格式,但由于您希望发送x-www-form-urlencoded
请求,因此必须将data
参数序列化为JSON格式。如果您只针对现代浏览器,则可以使用
URLSearchParams
,如下所示: