只是想知道是否有人可以在此代码中发现可能引发401未经授权的错误的问题?
[我有几个类似的功能,都很好用,可以通过Spotify Web API写入GET数据(使用axios,但是由于某种原因,我的PUT请求抛出错误。
这里是此端点的relevant Spotify documentation。
[基本上,数据作为一组JSON对象从客户端发送到服务器,其中包含我想保存到授权Spotify帐户的曲目的详细信息以及有效的访问令牌作为参数。我知道令牌是有效的,因为在此步骤之前,我将通过其他GET来获取用户的帐户数据。而且我知道该网址已正确连接,因为它已在错误详细信息中打印出来:
非常感谢您的帮助!
app.put("/migration-data/put/:token", async (req, res) => {
console.log(`Migrating data to new account using token ${req.params.token.substring(0, 4)}...\n`);
const toClientPutData = await putData(req.params.token, req.body);
res.json(toClientPutData);
});
const putData = async (token, data) => {
const putResults = {};
const spotifyAPI_PutTracks = async (trackData, index=0) => {
try {
const recurse = ((trackData.length - 1) - (index + 50)) > 0;
const offset = recurse ? 49 : (trackData.length - index) - 1;
var tracksThisQuery = "";
for (var i = index; i < (index + offset); i++) {
tracksThisQuery+=`${trackData[i].id}%2C`
}
tracksThisQuery+=`${trackData[(index + offset)].id}`
const puttingTracks = await axios.put(
`https://api.spotify.com/v1/me/tracks?ids=${tracksThisQuery}`,
{ headers: { Authorization: `Bearer ${token}` } }
);
if (recurse) {
return spotifyAPI_PutTracks(trackData, index+=50);
}
return puttingTracks.data;
} catch (apiError) {
console.log(apiError);
}
}
const { user, savedTracks, savedAlbums, following, playlists } = data;
if (token) {
// put tracks
const putTracksData = await spotifyAPI_PutTracks(savedTracks);
putResults["putTracks"] = putTracksData;
}
return putResults;
}
弄清楚-PUT希望在URL之后但在标题之前有一个附加的数据参数。我只是在第二个参数插槽中插入了一个空的对象常量,我们开始了比赛。