400:尝试从 Spotify 播放列表中删除曲目时出现 Missing Tracks 错误

400: Missing Tracks error when attempting to remove track from Spotify playlist

我正在尝试从我创建的测试播放列表中删除曲目。这是播放列表中的第三首曲目(即索引 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)

但是我运行代码的时候,track并没有被删除,并且返回如下错误信息:{'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\"}]}"

对我做错了什么有什么建议吗?

我找到了解决方案:数据作为数据而不是参数传递到端点。换句话说,将最后一行更改为

response = requests.request(method, url=url, headers=headers, data=json.dumps(params))

修复了问题。