如何对 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 ','