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()方法,只需要做两处关键修改就能捕获所有状态码:
- 在
http.post的第三个参数(请求选项)里添加observe: 'response',让请求返回完整的响应对象 - 修改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
相关产品推荐
相关产品推荐

