从后端发送的状态400在角度拦截器中无法识别为HttpResponse

固态硬盘

我有http拦截器。

import { Injectable, Inject } from '@angular/core';
import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpResponse } from '@angular/common/http';
import { Router } from '@angular/router';
import { Observable } from 'rxjs';
import { tap } from "rxjs/operators";
import { ToastrService } from 'ngx-toastr';
import { NgxSpinnerService } from "ngx-spinner";

@Injectable()
export class AppHttpInterceptor implements HttpInterceptor {

  constructor(
    @Inject('API_URL') private baseUrl: string,
    public router: Router,
    public toasterService: ToastrService,
    private spinner: NgxSpinnerService
  ) { }

  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    
    // API url
    request = request.clone({ url: `${this.baseUrl}/${request.url}` });

    // notifications
    return next.handle(request).pipe(
      tap(evt => {
        this.spinner.show();
        if (evt instanceof HttpResponse && evt.body && typeof evt.body.success != "undefined") {
          if(evt.body.success) {
            this.spinner.hide();
            this.toasterService.success(evt.body.message);
          } else {
            this.spinner.hide();
            this.toasterService.error(evt.body.message);
          }
        } else {
          this.spinner.hide();
        }
      })
    );
  }
}

那里,我正在显示来自后端的烤面包机消息,如果成功为真,那么我显示绿色烤面包机,如果为假,则显示红色烤面包机,表明出了点问题。当从Azure云上托管的nodejs后端api发送的响应状态为200(默认值)时,一切都很好。

context.res = {
            body: { success: false, message: `Please add title field` }
        };

问题是,例如,如果我发送状态为400的响应

context.res = {
            status: 400,
            body: { success: false, message: `Please add title field` }
        };

然后以某种方式在亩http拦截器的条件

evt instanceof HttpResponse

不执行。但是我不知道为什么。为什么状态码400不是HttpReponse的实例?

Zainhassan
return next.handle(req).pipe(
            tap(
                (res: any) => {// success block},
                (error: any) => {// error block}
            )
        );

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

HTTP拦截器中的角度HTTP

来自分类Dev

app.config中的多角度拦截器

来自分类Dev

无法自动连接拦截器中的字段

来自分类Dev

grpc状态未从服务器拦截器发送到客户端

来自分类Dev

Auth令牌的角度$ http拦截器

来自分类Dev

角度请求忙拦截器

来自分类Dev

从Spring WS拦截器发送响应

来自分类Dev

无法在拦截器中进行订阅

来自分类Dev

使用拦截器时无法使用axios发送表单数据

来自分类Dev

为什么我的角度拦截器会从本地存储中获取令牌的旧值?

来自分类Dev

CDI Bean中的默认拦截器

来自分类Dev

Angular2中的拦截器

来自分类Dev

AngularJS:$ resource中的拦截器问题

来自分类Dev

NestJS在拦截器中设置HttpStatus

来自分类Dev

AngularJS中的TypeScript拦截器

来自分类Dev

Guice中的注入方法拦截器

来自分类Dev

角度拦截器,处理HTTP错误并重试

来自分类Dev

完成关于角度拦截器错误的请求

来自分类Dev

选定请求上的角度身份验证拦截器

来自分类Dev

查询拦截器:更改响应状态代码

来自分类Dev

Angular JS拦截器处理HTTP错误状态

来自分类Dev

Java用拦截器发送http post

来自分类Dev

CXF中的拦截器未按添加到拦截器中的顺序进行调用

来自分类Dev

在拦截器中收到403后无法重新请求请求

来自分类Dev

如何将数据从EJB拦截器传递到异步EJB中的拦截器

来自分类Dev

AngularJS拦截器@q无法处理多部分请求?

来自分类Dev

春天,拦截器的excludePathPatterns函数无法正常工作

来自分类Dev

无法在HTTP拦截器中注入服务

来自分类Dev

无法再覆盖斯巴达克斯拦截器了吗?