我正在尝试从我创建的测试播放列表中删除曲目。它是播放列表中的第三首曲目(即索引2),Spotify ID为3PqvdKpjaxab0mWns1laKo
。我这样做的代码如下:
method = "delete"
url = "https://api.spotify.com/v1/users/"+username+"/playlists/6bhZt1Uia5pfmeL5OYDJZM/tracks"
headers = {
'Authorization': 'Bearer ' + TOKEN,
'Content-Type': 'application/json',
'Accept': 'application/json'
}
params = {
"tracks": [
{
"positions": [2],
"uri": "spotify:track:3PqvdKpjaxab0mWns1laKo"
}
]
}
response = requests.request(method, url=url, headers=headers, params=params)
但是,当我运行代码时,不会删除该轨道,并返回以下错误消息:{'error': {'message': 'Missing tracks', 'status': 400}}
另一方面,如果我在web api或使用curl(如下所示)中尝试完全相同的请求,则可以成功运行。
curl -X DELETE "https://api.spotify.com/v1/users/USERNAME/playlists/6bhZt1Uia5pfmeL5OYDJZM/tracks" -H "Accept: application/json" -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" --data "{\"tracks\":[{\"positions\":[2],\"uri\":\"spotify:track:3PqvdKpjaxab0mWns1laKo\"}]}"
有关我做错的任何建议吗?
答案 0 :(得分:0)
我找到了解决方案:数据作为数据传递到端点,而不是参数。换句话说,将最后一行更改为
response = requests.request(method, url=url, headers=headers, data=json.dumps(params))
解决了这个问题。