使用 Axios GET POST 的 Twitch API 问题

Problem with API of Twitch with Axios GET POST

我遇到了代码问题。

axios({
        method: 'post',
        url: 'https://id.twitch.tv/oauth2/token',
        body: {
        client_id: 'a',
        client_secret: 'Bearer b',
        grant_type: 'client_credentials',}
            }).then(response => {
        console.log(response);

      })
      .catch(error => {
        console.log(error);
      })

结果是:

data: { status: 400, message: 'missing client id' }

但是如果我把它们放在 url 中,这种方式就可以正常工作:

url: 'https://id.twitch.tv/oauth2/token?client_id=a&client_secret=b&grant_type=client_credentials',

我的问题是什么? 你也可以给我一个 axios.get 的例子吗?与 :

url: 'https://api.twitch.tv/helix/games/top'
headers: {
client_id: 'a',
Authorization: 'Bearer b',
}

显然 API 通过 URL 接收参数,因此将它们也作为 url 传递也很有趣。 例如:axios({ 方法:'post', url: 'https://id.twitch.tv/oauth2/token?client_id=${variable.a}&client_secret=${variable.b}...

对于 axios,您需要以 data 而不是 body

的形式发送

然后construct/send一个FormData

例如

axios({
  method: "post",
  url: "myurl",
  data: bodyFormData,
  headers: { "Content-Type": "multipart/form-data" },
})
  .then(function (response) {
    //handle success
    console.log(response);
  })
  .catch(function (response) {
    //handle error
    console.log(response);
  });

另请参阅: 和:https://github.com/axios/axios/issues/318

使用 body 会得到混合结果,因为库 (axios) 不知道如何对发送的数据进行编码

我个人使用 got 而不是 axios 所以我发送

            got({
                url: "https://id.twitch.tv/oauth2/token",
                method: "POST",
                headers: {
                    "Accept": "application/json"
                },
                form: {
                    client_id: config.client_id,
                    client_secret: config.client_secret,
                    grant_type: "client_credentials"
                },
                responseType: "json"
            })
            .then(resp => {
                //SNIP