当前位置: 首页 > 知识库问答 >
问题:

Angular 8拦截器-如何处理状态200的响应

程俊誉
2023-03-14

我们正在将AngularJS应用程序迁移到最新的Angular版本。我们总是通过接收状态代码200来处理http请求,如果有错误,我们仍然得到状态代码200(不包括404-500,以及关于实际服务器或用户连接的错误)。例如,如果用户令牌过期,我们发出请求,我们将得到一个状态代码200,其主体为errorcode:number,message:string。这是不会改变的。

使用关于令牌的相同示例,我所看到的关于拦截器处理无效令牌问题并在可观察到的CatchError中刷新它的所有代码示例:

return next.handle(request).pipe(
  map((event: HttpEvent<any>) => {
    <Process Response, and errors in my project>
  }),
  catchError((error: HttpErrorResponse) => {
    <Process Invalid Token in code examples>
  }),
);

共有1个答案

韩华美
2023-03-14

在这种情况下,您所需要做的就是在拦截器中解析响应的正文并返回

if (res.body.includes(...)) {

           throw of(new HttpErrorResponse({status: 500, statusText: 'Simulated erorr'}));

}
 类似资料:
  • 5.1、处理器拦截器简介 Spring Web MVC的处理器拦截器(如无特殊说明,下文所说的拦截器即处理器拦截器) 类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。 5.1.1、常见应用场景 1、日志记录:``记录请求信息的日志,以便进行信息监控、信息统计、计算PV(Page View)等。 2、权限检查:``如登录检测,进入处理器检测检测是否登录,如果没有直接返

  • 本文向大家介绍详解springmvc拦截器拦截静态资源,包括了详解springmvc拦截器拦截静态资源的使用技巧和注意事项,需要的朋友参考一下 springmvc拦截器interceptors springmvc拦截器能够对请求的资源路径进行拦截,极大的简化了拦截器的书写。但是,千万千万要注意一点:静态资源的放行。 上代码: 问题来了,在请求jsp页面的时候,你的静态资源的访问仍然会被自定义拦截器

  • 我计划为 EJB 编写一个拦截器,它基本上可以执行以下操作: 问题是,如果em.flush()应用于用@TransactionAttribute(NOT _ SUPPORTED)或@TransactionAttribute(SUPPORTS)注释的方法(即只读方法),它会引发异常,而它在使用默认@ transaction attribute(必需)的方法(即更改数据库的方法)时工作良好。 有没有办

  • 我有以下问题:我自定义了Spring boot提供的SortagenationProvider类,以调用rest服务,以便在远程服务器上登录。 如果凭据正确,没问题。 当凭据不正确,并且服务器响应http状态为403时,问题就会出现。实际上,我得不到响应,因为它自动引发了API rest的一个异常: 我尝试创建自定义类,用@ControllerAdvice注释捕获异常,但是无法调用它,因为异常不是

  • 主要内容:追踪Poll,其实真正处理响应是在 Networkclient的poll,步骤三追踪Poll 从poll里面进入slector的poll调用addToStagedReceives()进行消息处理(把接收的数据加入到待处理队列); 相应数据结构 selector的poll() addToCompletedReceives(),把响应存入到completedReceives 其实真正处理响应是在 Networkclient的poll,步骤三 调用 handleCompletedR

  • 问题内容: 应该很容易: 但是这样就不会调用拦截器。 问题答案: 默认情况下,Spring将注册,和,而无需任何显式配置。 如果您定义自己的bean,那么默认的bean将不会被注册,而您只会得到显式声明的bean。 到目前为止,一切都很好。 当您添加到混合中时,问题就来了。这 也 声明了自己的,它取代了默认值。但是,如果您也声明自己的一个,那么最终您将声明两个。由于按照声明的顺序进行查询,因此通常