angular - Angular:HttpInterceptor 对特定情况有不同的处理
问题描述
我知道 Angular 中有 HTTPInterceptor:
@Injectable()
export class HTTPRequestInterceptor implements HttpInterceptor {
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(request).pipe(
tap(
(_response: HttpEvent<any>) => {
// nothing to do ... ... used for sending anyway...
},
(error: HttpErrorResponse) => {
... // display message
}
据我了解,这适用于我的所有请求。现在我的情况是,对于一个特定的请求,我不想应用常规的错误处理。有没有简单的方法来实现这一目标?例如在我的请求中设置一些特殊参数
this.http.get<MyInfo>(`getlastInfo/${id}`).toPromise();
解决方案
一个简单但肮脏的方式
@Injectable()
export class HTTPRequestInterceptor implements HttpInterceptor {
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
if(req.url.contains('getlastInfo')){
//specific handling
} else {
//normal handling
}
}
您还可以使用req.body
或req.headers
通过在标题中设置特定键值来进行检查。
推荐阅读
- android - 无法在 Android 模拟器上运行 React-Native 应用程序 - Windows
- kubernetes - 从 kubectl 输出显示失败的 pod
- botframework - 当前是否有任何方法和/或计划在消息或卡片中包含带有 CSS 样式的 HTML?
- r - 如何使 R 能够根据矩阵中的单元格地址计算公式?
- shell - 连接一个ssh下多级的db
- javascript - 如何让我的 JavaScript 文件在我的组件结束时执行?
- python - 如何在 PySide 中创建功能区菜单
- javascript - 如何根据子节点删除父节点和/或 css 样式
- c - 两个动态库的传递依赖中的符号冲突
- css - Materialize.css中的卡片间隙