我是Angular的新手,正在从事一个项目。我需要为某些API调用设置承载令牌。这就是我尝试过的。
getData(){
this.apiService.get('Services/getall', true).subscribe((data) => {
console.log("data" + data);
},error => {
return throwError(error);
});
}
APIService.get方法
/* Make get request to API*/
get(url: string, authorized: boolean = false ) : Observable<any> {
return this.http.get<any>(apiUrl + url, { headers: this.getHeaders(authorized) }).pipe(catchError(this.errorHandler));
}
如果API需要承载令牌
/**
* set authorization headers
*/
getHeaders(authorized: boolean) {
let userToken = localStorage.getItem('userToken');
const headers = new HttpHeaders({ 'Content-Type': 'application/json' });
if (authorized) {
headers.append('Authorization', 'Bearer ' + userToken);
}
return headers;
}
但这不起作用。我收到401错误。当我尝试使用Postman时,API可以正常工作。
能否请您帮我解决。
答案 0 :(得分:1)
HttpHeaders.append不会修改您现有的标头。而是返回添加了新条目的克隆。因此,您需要再次将其分配给标题。
let headers = new HttpHeaders({ 'Content-Type': 'application/json' });
if (authorized) {
headers = headers.append('Authorization', 'Bearer ' + userToken);
}
此外,我想您不需要设置json contentType。如果需要的话,Angular会为您服务。
您将来可能希望使用UICC(eUICC) Interoperable Format Technical Specification将承载自动添加到所有请求中