angular - Angular 6/7 - 在服务中获取整个 http 响应状态
问题描述
我在 Angular 7 中有以下服务:
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { map } from 'rxjs/operators';
import { BehaviorSubject } from 'rxjs';
@Injectable()
export class UserService {
private currentUserSubject: BehaviorSubject<any>;
constructor(
private http: HttpClient
) {
this.currentUserSubject = new BehaviorSubject(null);
}
public get currentUserValue(): any {
return this.currentUserSubject.value;
}
login(entity: any, inputUsername: any, inputPassword: any): any {
const httpOptions = {
headers: new HttpHeaders({
username: inputUsername,
password: inputPassword
})
};
return this.http.get(entity.url, httpOptions)
.pipe(map((user: Response) => {
console.log(user);
console.log(user.status);
if (user) {
this.currentUserSubject.next(user);
}
return user;
}));
}
}
我想获取响应状态(200、401 等)。如果我尝试订阅诸如 .pipe(map(.....)).subscribe(...) 之类的订阅,则会收到错误消息,即订阅不是函数。
此外,我在 pipe(map()) 中只得到 200 个状态响应。我在这里没有收到其他状态代码的响应。
我想根据收到的状态更新 BehaviorSubject。
如何获取服务中的所有响应及其状态?
我已经通过Angular 6 Get response headers with httpclient issue完成了,但这不适用于这里。
我添加了observe: 'response' 到http 标头,但它没有任何区别。
const httpOptions = {
headers: new HttpHeaders({
username: inputUsername,
password: inputPassword,
observe: 'response',
}),
};
解决方案
我就是这样做的:
this.http.get(this.url, { observe: 'response' })
.subscribe(response => console.log(response.status));
使用 Angular HttpClient 并订阅从http.get
.
推荐阅读
- if-statement - 得到答案的两个表达式(如果 X = Y 且 A = B,则答案为 D)
- angular - 通过 Ionic 4 中的侧菜单路由页面
- jenkins - 如何在 Jenkins 中制作 QA 自动化测试执行结果图的屏幕截图并将其存档在 Artifacts 中
- asp.net-mvc - 登录asp net mvc后将用户重定向到原始url
- reactjs - 当我们可以使用 useEffect 钩子在其中制作副作用时,React 功能组件如何仍然是“纯函数”?
- javascript - 为什么这个简单的 JSON.parse JavaScript 代码会失败?
- r - 跳过索引列中的 NA 行
- selenium - 如果使用 FindBy 注释,Selenium 检查元素是否存在
- python - 如何在一个长文件中添加多个唯一的 Excel 文件?(Python)
- android - 如何在 OREO 之前从通知徽章中删除计数?