调用Spotify添加喜欢歌曲API时出现400错误(缺失id字段)求助
排查Spotify API添加喜欢歌曲400错误(Missing required field: id)
常见问题及排查方向
1. 请求格式不符合API要求
Spotify 的 PUT /me/tracks 接口要求请求体必须包含**ids字段**,且该字段值为歌曲ID组成的数组,而非单个id字段。正确的请求体格式应为:
{ "ids": ["你的歌曲ID"] }
如果代码中直接传递单个id、键名写成id而非ids,都会触发该错误。
2. track.id未正确获取或为空
确认传入的track.id实际有效:
- 调用API前添加日志打印,比如
console.log('当前歌曲ID:', track.id),检查是否为undefined、空字符串或格式异常值。 - 部分Spotify接口返回的歌曲数据会嵌套在
track字段下(比如推荐接口),此时需要取track.track.id而非直接track.id。
3. 请求头未设置正确的Content-Type
Spotify API要求请求头必须包含Content-Type: application/json,如果缺失该配置,服务器无法正确解析请求体,会导致识别不到ids字段。
4. 代码逻辑中的参数传递错误
结合你提供的代码片段针对性排查:
- home.jsx:检查调用添加收藏函数时,是否正确传递了
track.id,比如是否误传整个track对象而非ID值,或者参数名传递错误。 - recommendationsSlice.jsx:检查异步Thunk中的请求配置:
- 确认请求体是
{ ids: [trackId] }而非{ id: trackId }; - 若使用
fetch,需确保body用JSON.stringify()序列化;若使用axios,需确保data字段格式正确。
- 确认请求体是
示例正确的请求代码(fetch版本):
const addToFavorites = async (trackId) => { const token = localStorage.getItem('spotify_token'); await fetch('https://api.spotify.com/v1/me/tracks', { method: 'PUT', headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ ids: [trackId] }) }); };
总结
优先排查请求体格式是否符合{ ids: [数组] }要求,再验证track.id的有效性,最后检查请求头和参数传递逻辑。
内容的提问来源于stack exchange,提问作者ChrisKola99
相关产品推荐
相关产品推荐

