Angular HttpClient GET请求携带Token及参数错误解决
解决Angular HttpClient GET请求携带Token时的参数错误问题
问题原因
你遇到的Expected 1-2 arguments, but got 3错误,核心原因是HttpClient.get()方法的第二个参数是一个单一的配置对象,但你把{ headers: headers }和{ observe: 'response' }拆成了两个独立的参数传递,导致参数数量超出预期。
另外要注意:Angular的HttpClient(属于@angular/common/http模块)需要使用HttpHeaders类来创建请求头,而不是旧@angular/http模块里的Headers类,这也是你修正代码时调整的关键细节。
修正后的完整代码
public detailsuser(): Observable<Users[]> { return this.http.get(Api.getUrl(Api.URLS.details), { headers: new HttpHeaders({ 'Content-Type': 'application/json', 'X-Token': this.currentUser.token }), observe: 'response' }) .pipe(map((response: HttpResponse<any>) => { console.log('response', response); return response.body.map(data => { console.log(data) return new Users(data); }); })); }
关键说明
- 合并配置对象:将
headers和observe配置项放在同一个对象中,作为get()方法的第二个参数传递,完全符合HttpClient的参数规范。 - 使用HttpHeaders:直接通过
new HttpHeaders()创建包含Token和Content-Type的请求头实例,适配HttpClient的要求,避免新旧模块类混用导致的潜在问题。 - observe: 'response':该配置让我们获取完整的
HttpResponse对象,这样就能顺利访问到响应体response.body,进而将返回数据转换为Users数组。
内容的提问来源于stack exchange,提问作者Alon Bi
相关产品推荐
相关产品推荐

