我正在尝试向API发送一个put请求。为了使它工作,我必须在标题中发送一个授权令牌。
这是我的代码:
updatePlaylist(id, name) {
axios.put(`${config.baseUrl}/playlists/${id}`, { headers: auth.getAuthHeader(), data: { name } })
.then(() => {
})
.catch(() => {
console.error('unable to update tasks');
});
},
这里是getAuthHeader函数:
getAuthHeader() {
console.log(localStorage.getItem('token'));
return {
Authorization: localStorage.getItem('token')
};
}
getAuthHeader函数返回的标记是好的。
现在问题是我总是得到401错误,标题中没有授权。而不是那样,我在使用Google Chrome检查员检查时,在“请求有效负载”部分中看到了这一点:
{headers: {,…}, data: {name: "test"}}
data
:
{name: "test"}
headers
:
{,…}
出于某种原因,我的标题随数据一起发送。
任何人都知道如何修复它?
非常感谢
答案 0 :(得分:1)
您调用data
的方式不正确。您正在put方法的config
中传递标题,您需要将其作为axios.put(`${config.baseUrl}/playlists/${id}`, {
name
}, {
headers: {...getAuthHeader() //, {...otherHeaders} Incase you have to add other headers as well
}
})
参数发送。
headers
使用别名方法(post,put,get)时,不需要在config中指定url,method和data属性。但有关
GetUserData(){ this.userService.GetUserDetails().subscribe(data=>{ if(Array.isArray(data)) this.user=data; console.log(this.user); }); }
的信息仍将转到配置参数。