You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:37:45