【问题标题】:React.js: Accessing the Retry-After header in an API responseReact.js:在 API 响应中访问 Retry-After 标头
【发布时间】:2021-04-13 15:09:42
【问题描述】:

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

   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('错误!'); // 记录“错误!”
  • console.log(数据); // 记录错误对象,但不记录标头
  • console.log(pair) // 错误提示'Uncaught (in promise) TypeError: Cannot read property 'entries' of undefined'

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

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

如果有任何建议,我将不胜感激。非常感谢您!

【问题讨论】:

    标签: reactjs api header spotify


    【解决方案1】:

    我想我找到了你的错误所在。代码几乎是正确的,只是您正在检查响应的 json 中的标头。

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

    【讨论】:

    • 这是完美的——就像一个魅力!感谢您的帮助和建议!
    • 很高兴听到这个消息。那你能把我的答案标记为正确吗??谢谢!
    猜你喜欢
    • 2012-03-14
    • 1970-01-01
    • 2011-04-15
    • 2016-01-21
    • 1970-01-01
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多