如何对 cURL 命令使用 axios.post 方法? (或修正状态码:415)
How to use axios.post method for a cURL command? (Or fix status code: 415)
我们需要 运行 axios.post 等效于以下 nodeJS 中的 cURL 命令:
curl -H "Authorization: Basic ZjM4Zj...Y0MzE=" -d grant_type=refresh_token -d refresh_token=NgAagA...NUm_SHo https://accounts.spotify.com/api/token
我的做法:
axios.post("https://accounts.spotify.com/api/token", {
grant_type: 'refresh_token',
refresh_token: 'NgAagA...NUm_SHo',
header: {
Authorization: 'Basic ZjM4Zj...Y0MzE=',
}
}).then((resAxios) => {
console.log(resAxios.data)
spotifyResult = resAxios.data;
}).catch((error) => {
console.error(error)
})
以上代码returns响应错误如下:
statusCode: 415,
statusMessage: 'Unsupported Media Type'
格式:
refresh_token
应该是 application/x-www-form-urlencoded
Authorization: Basic <base64 encoded client_id:client_secret>
cURL命令参考'Authorization Code Flow',这里:
https://developer.spotify.com/documentation/general/guides/authorization-guide/
随意提供任何其他变体,即,而不是使用 axios。我更喜欢它,因为它也解析获取的数据。如果是这样,请提供用于解析它的代码。我是 'beginner' 初学者。
感谢大家:Manuel Spigolon, zx01, Mark Stroebel, Łukasz Szewczak, ponury-kostek, Jakub Luczak, Gerardo Gonzalez :)
我在问题的评论中尝试 this answer on this link, as provided by @zx01。
最终代码,根据需要定制:
axios({
url: "https://accounts.spotify.com/api/token",
method: "post",
params: {
grant_type: "refresh_token",
//grant_type: "client_credentials", //This works as well.
refresh_token: 'AQAw95rH0...CnWBE'
},
headers: {
Authorization:'Basic MWQ4Z...dhYmU=',
"Accept": "application/json",
"Content-Type": "application/x-www-form-urlencoded"
},
}).then(function (response) {
console.log(response.data);
}).catch(function (error) {
console.log(error);
});
但是,下面的语法似乎不起作用。
它再次 returns 状态代码 415:不支持的媒体类型。
axios.post("https://accounts.spotify.com/api/token", null, {
params: {
grant_type: "refresh_token",
//grant_type: "client_credentials", //This doesn't work either.
refresh_token: 'AQAw95rH0...CnWBE'
},
headers: {
Authorization:'Basic MWQ4Z...dhYmU=',
"Accept": "application/json",
"Content-Type": "application/x-www-form-urlencoded"
},
}).then(function (response) {
console.log(response.data);
}).catch(function (error) {
console.log(error);
});
如果有人可以修复上面的代码,并说明我们为什么会收到该错误的原因,那就太好了。
另请注意,在包含 'headers' 属性.
的右花括号旁边有一个 quomma ','
我们需要 运行 axios.post 等效于以下 nodeJS 中的 cURL 命令:
curl -H "Authorization: Basic ZjM4Zj...Y0MzE=" -d grant_type=refresh_token -d refresh_token=NgAagA...NUm_SHo https://accounts.spotify.com/api/token
我的做法:
axios.post("https://accounts.spotify.com/api/token", {
grant_type: 'refresh_token',
refresh_token: 'NgAagA...NUm_SHo',
header: {
Authorization: 'Basic ZjM4Zj...Y0MzE=',
}
}).then((resAxios) => {
console.log(resAxios.data)
spotifyResult = resAxios.data;
}).catch((error) => {
console.error(error)
})
以上代码returns响应错误如下:
statusCode: 415,
statusMessage: 'Unsupported Media Type'
格式:
refresh_token
应该是 application/x-www-form-urlencoded
Authorization: Basic <base64 encoded client_id:client_secret>
cURL命令参考'Authorization Code Flow',这里:
https://developer.spotify.com/documentation/general/guides/authorization-guide/
随意提供任何其他变体,即,而不是使用 axios。我更喜欢它,因为它也解析获取的数据。如果是这样,请提供用于解析它的代码。我是 'beginner' 初学者。
感谢大家:Manuel Spigolon, zx01, Mark Stroebel, Łukasz Szewczak, ponury-kostek, Jakub Luczak, Gerardo Gonzalez :)
我在问题的评论中尝试 this answer on this link, as provided by @zx01。
最终代码,根据需要定制:
axios({
url: "https://accounts.spotify.com/api/token",
method: "post",
params: {
grant_type: "refresh_token",
//grant_type: "client_credentials", //This works as well.
refresh_token: 'AQAw95rH0...CnWBE'
},
headers: {
Authorization:'Basic MWQ4Z...dhYmU=',
"Accept": "application/json",
"Content-Type": "application/x-www-form-urlencoded"
},
}).then(function (response) {
console.log(response.data);
}).catch(function (error) {
console.log(error);
});
但是,下面的语法似乎不起作用。 它再次 returns 状态代码 415:不支持的媒体类型。
axios.post("https://accounts.spotify.com/api/token", null, {
params: {
grant_type: "refresh_token",
//grant_type: "client_credentials", //This doesn't work either.
refresh_token: 'AQAw95rH0...CnWBE'
},
headers: {
Authorization:'Basic MWQ4Z...dhYmU=',
"Accept": "application/json",
"Content-Type": "application/x-www-form-urlencoded"
},
}).then(function (response) {
console.log(response.data);
}).catch(function (error) {
console.log(error);
});
如果有人可以修复上面的代码,并说明我们为什么会收到该错误的原因,那就太好了。
另请注意,在包含 'headers' 属性.
的右花括号旁边有一个 quomma ','