【发布时间】:2021-01-17 10:12:41
【问题描述】:
当后端的响应为 200 时,我无法在本地存储中设置项目。似乎它无法识别请求的状态。
options = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*',
'Authorization': 'Bearer '+localStorage.getItem("access_token")
}),
observe: "response", // to display the full response
responseType: "json"
};
constructor(private http: HttpClient, private router: Router) {
}
authenticate(url, data, options) {
this.http.post(environment.getBaseAddress() +url+'/', data, options).subscribe((data:any) => {
if (data.status == 200) {
localStorage.setItem("access_token", data['access_token']);
console.log(data.status)
}
else this.router.navigateByUrl('something-else');
})
}
【问题讨论】:
-
此外,如果订阅块的成功部分正在执行,则隐含意味着您的 api 调用已成功。在这种情况下,您甚至可能不需要担心状态代码。
-
我无法共享 access_token 但 console.log(data.status) 没有返回任何内容。谢谢你的洞察力。那么如何在 if 语句中处理响应成功?
-
这很可能是因为 api 返回的数据对象上没有名为 status 的属性。
-
从你目前分享的内容来看,成功时你想保存访问令牌,出错时你想重定向到另一条路线 - 这是正确的吗?
-
啊,好的,明白了。您认为选项部分是否正确完成?当我在 this.http.post(environment.getBaseAddress() +url+'/', data, {observe: "response") 中添加 observe: 'response' 时,一切正常。当我在选项中添加它时,问题就开始了。
标签: angular typescript api response status