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

Angular中如何通过HttpClient获取所有HTTP请求的状态码(含200、202等成功状态码)

关于Angular HttpClient获取请求状态码的解决方案

嘿,我来帮你搞定这两个关于Angular HttpClient状态码的问题!

问题1:如何获取Angular中HttpClient模块的请求状态码?

默认情况下,Angular的HttpClient在请求成功时只会返回响应体数据,如果想要拿到状态码、响应头这些完整的响应信息,你需要在发起请求时,在选项参数里设置 observe: 'response'。这样HttpClient会返回一个完整的HttpResponse<T>对象,其中就包含了status属性(也就是HTTP状态码),还有headers、body等其他信息。

问题2:修改现有代码以获取所有HTTP状态码(包括成功状态码)

针对你提供的apiCall()方法,只需要做两处关键修改就能捕获所有状态码:

  1. 在http.post的第三个参数(请求选项)里添加 observe: 'response',让请求返回完整的响应对象
  2. 修改subscribe的成功回调,接收完整的HttpResponse对象,从中提取状态码

下面是修改后的完整代码:

apiCall() { 
  let header1 = new HttpHeaders(); 
  header1 = header1.append('Content-Type', 'application/json'); 
  header1 = header1.append('Authorization', `Bearer ${this.token}`); 
  
  // 添加observe: 'response',获取完整响应对象
  this.http.post("URL", { "dataSentHere": "data" }, { headers: header1, observe: 'response' })
    .subscribe(
      (response) => { 
        // 成功时获取状态码
        console.log(`成功状态码: ${response.status}`);
        // 原来的响应体数据在response.body里
        console.log("响应体数据:", response.body); 
      }, 
      (err: HttpErrorResponse) => { 
        // 错误时获取状态码,包括403以及其他错误状态码
        console.log(`错误状态码: ${err.status}`);
        if (err.status === 403) { 
          console.log("403 status code caught"); 
        } else {
          // 可以在这里处理其他错误状态码
          console.log(`处理${err.status}状态码的逻辑`);
        }
      } 
    ) 
}

代码说明:

  • 设置observe: 'response'后,成功回调的参数变成了HttpResponse实例,你可以通过response.status直接拿到200、202这类成功状态码
  • 错误回调里的HttpErrorResponse本身就包含status属性,你可以扩展逻辑处理所有错误状态码
  • 如果还需要响应头信息,可以通过response.headers来访问

内容的提问来源于stack exchange,提问作者Santhosh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.01 00:22:44