angular-http-interceptors - 在 Angular 6+ HttpInterceptor 中更改对错误的成功响应
问题描述
我需要一个 HttpInterceptor 将 Http 200 成功响应更改为 500 Http 错误。
但是我有一个有效的拦截器,但是当将成功的答案转换为错误时,http订阅者直接调用“完成”处理程序(下一个或错误处理程序都没有被调用)。
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next
.handle(request)
.pipe(
map((event: HttpEvent<any>):any => {
let type = this.convertTypeToString(event.type);
if (type === "Response") {
let error: HttpErrorResponse = new HttpErrorResponse({status: 500});
return Observable.create(observer => observer.error(error));
}
return event;
})
);
}
预期行为:当我触发例如登录调用时,我想返回 - 即使成功登录 - Http 500 错误。
解决方案
您可以使用 throwError Observer 返回观察者表单成功处理程序。
import { throwError } from 'rxjs';
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next
.handle(request)
.pipe(
map((event: HttpEvent<any>):any => {
let type = this.convertTypeToString(event.type);
if (type === "Response") {
let error: HttpErrorResponse = new HttpErrorResponse({status: 500});
return throwError(err);
}
return event;
})
);
}
推荐阅读
- java - NotificationListenerService 在基于 MIUI 9 的系统中不起作用
- node.js - sequelize-auto --config 选项
- python - 如何在 python 中使用自定义编码来伪代码?
- node.js - 显示最后删除消息的“狙击”命令
- javascript - vue-router 不渲染子组件
- objective-c - "because it is not SIP-protected" - Apple event error in macOS Mojave
- sql - 查询计数有多少记录在日期范围之外
- php - PHP Elasticsearch 在字符串开头搜索
- javascript - ngx-datatable 高亮列
- java - 如何在测验应用程序中为 Firebase 数据创建随机数?