访问 API 响应中的 Retry-After 标头

问题描述 投票:0回答:1

我是一名新程序员,使用 React.js 和 Spotify API 来开发音乐应用程序。我正在尝试访问 429 速率限制错误响应中的 Retry-After 标头(Spotify 文档此处)。这是我当前的代码,我从这篇文章中松散地复制了它。

   async getArtistArt (artistID) { 
      let url = `https://api.spotify.com/v1/artists?ids=${artistID}`
      let response = await fetch(url, {
        headers: {
          'Authorization': 'Bearer ' + localStorage.getItem('accessToken')
        },
      });
      let data = await response.json();

      if (Object.keys(data)[0] === "error" && data.error.status === 429) { // Handle rate limiting
        console.log('Error!'); 
        console.log(data); 
        
        for (var pair of data.headers.entries()) {
          console.log(pair); 
          console.log(pair[0]);
        }
        
      }

      return data;
    }

这是我在控制台中看到的:

-

screenshot here

  • console.log('Error!');
    // 记录“错误!”
  • console.log(data);
    // 记录错误对象,但不记录标头
  • console.log(pair)
    // 错误提示“未捕获(承诺中)TypeError:无法读取未定义的属性‘条目’”

我尝试过不将响应放入 JSON,但这似乎没有效果。

我尝试避免使用 try/catch 错误语句,因为我听说它们有些过时并且通常不推荐使用,但是我需要它们来访问响应标头吗?

如有任何建议,我将不胜感激。

javascript reactjs http-headers spotify
1个回答
0
投票

我想我找到了你的错误所在。除了您要检查响应的

json
中的标头之外,代码几乎是正确的。

尝试执行

for (var pair of response.headers.entries()) {...}
,以便您接受响应而不是其
json
内容。

© www.soinside.com 2019 - 2024. All rights reserved.