我是一名新程序员,使用 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;
}
这是我在控制台中看到的:
-
console.log('Error!');
// 记录“错误!”console.log(data);
// 记录错误对象,但不记录标头console.log(pair)
// 错误提示“未捕获(承诺中)TypeError:无法读取未定义的属性‘条目’”我尝试过不将响应放入 JSON,但这似乎没有效果。
我尝试避免使用 try/catch 错误语句,因为我听说它们有些过时并且通常不推荐使用,但是我需要它们来访问响应标头吗?
如有任何建议,我将不胜感激。
我想我找到了你的错误所在。除了您要检查响应的
json
中的标头之外,代码几乎是正确的。
尝试执行
for (var pair of response.headers.entries()) {...}
,以便您接受响应而不是其 json
内容。