我需要一个HttpInterceptor,它将Http 200成功响应更改为500 Http错误。
但是我有一个有效的拦截器,但是当要将成功的答案转换为错误时,http订阅者直接调用“完成”处理程序(不会调用next或错误处理程序)。
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错误。
答案 0 :(得分:0)
解决方案是根本不使用HttpHandler进行调用。只需提供一个Observable即可返回错误:
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
let error: HttpErrorResponse = new HttpErrorResponse({status: 500});
return Observable.create(observer => observer.error(error));
}
HttpHandler在那里使请求“为您”。但是,当请求成功时,很难(不可能?)将其重定向到错误响应。因此,跳过next.handle()调用,并通过返回一个Observable来模拟该调用。
答案 1 :(得分:0)
您可以使用 throwError Observer 返回观察者表单成功处理程序。
ALTER TABLE [YourTableName]
ADD DEFAULT (getdate()) FOR [YourDateColumn];