You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Spotify API返回HTML而非JSON的解析报错求助

解决Spotify API请求返回HTML而非JSON的问题

核心错误原因

你代码里最致命的问题是fetch调用时传入的是字符串字面量'FETCH_URL',而不是你拼接好的变量FETCH_URL。这会让浏览器请求一个不存在的地址(字面意义上的'FETCH_URL'),服务器返回404的HTML页面,自然无法解析成JSON。

修正后的代码

const BASE_URL = 'https://api.spotify.com/v1/search?';
const FETCH_URL = `${BASE_URL}q=${this.state.query}&type=artist&limit=1`;
console.log('FETCH_URL', FETCH_URL);
// 去掉FETCH_URL的引号,使用变量
fetch(FETCH_URL, {
    method:'GET',
    headers: {
        'Accept': 'application/json',
        // GET请求不需要Content-Type头,可以移除
        "Authorization": "Bearer BQDyac2glKnbstiG79UKzKSReNbsWa_hEKlOWAZtXaFZpfx8ZibluRUmBHHO12CjLMJv3KBaKTZqUKJReA11_ItrYIkr3CmnUi6ykUD7J0gZk9pKzxjz02j4byQfSa6s7Y08OMNzugFffYc68tzZiGSDp9vB80eiiIod_igAH8ZxbPBUMsRH3pbiMY8tnJpeXmk"
    }
})
// 先检查响应状态是否正常,避免非200响应直接解析JSON报错
.then(response => {
    if (!response.ok) {
        throw new Error(`HTTP error! status: ${response.status}`);
    }
    return response.json();
})
.then(json => {
    const artist = json.artists.items[0];
    console.log('artist', artist);
    this.setState({artist});
})
// 捕获错误,方便调试
.catch(error => console.error('请求失败:', error));

额外注意事项

  • 移除不必要的请求头:GET请求不需要Content-Type头,这个头是用来告诉服务器你发送的请求体格式,GET请求没有请求体,所以可以删掉。
  • 处理错误响应:添加response.ok检查,当返回401(token过期)、404等状态码时,提前抛出错误,避免进入json解析步骤导致语法错误。
  • Token有效期:Spotify的Bearer Token是有有效期的,如果你后续再次遇到类似问题,先检查token是否过期,需要重新获取。

内容的提问来源于stack exchange,提问作者yash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 04:20:27