在NestJS中构建超时拦截器

简介: 使用 Nest.js 构建超时拦截器

创建超时拦截器类:在适当的位置创建一个名为 TimeoutInterceptor 的拦截器类。这个类需要实现 NestInterceptor 接口,并重写 intercept 方法。

import {
    Injectable, NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common';
import {
    Observable, throwError, TimeoutError } from 'rxjs';
import {
    catchError, timeout } from 'rxjs/operators';

@Injectable()
export class TimeoutInterceptor implements NestInterceptor {
   
  intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
   
    const timeoutDuration = 5000; // 设置超时时间,单位是毫秒

    return next.handle().pipe(
      timeout(timeoutDuration),
      catchError((err) => {
   
        if (err instanceof TimeoutError) {
   
          // 处理超时错误
          return throwError(new Error('请求超时'));
        }
        return throwError(err);
      }),
    );
  }
}

注册拦截器:在适当的地方(模块或控制器)使用 useInterceptor 方法将拦截器注册到应用程序中。

import {
    Module } from '@nestjs/common';
import {
    APP_INTERCEPTOR } from '@nestjs/core';
import {
    TimeoutInterceptor } from './timeout.interceptor';

@Module({
   
  providers: [
    {
   
      provide: APP_INTERCEPTOR,
      useClass: TimeoutInterceptor,
    },
  ],
})
export class AppModule {
   }

现在,当你的请求处理程序执行时间超过设定的超时时间时,它将抛出一个 TimeoutError,然后在拦截器中进行处理。

请注意,可以根据你的具体需求来自定义拦截器的逻辑和超时时间。

相关文章
|
6月前
|
前端开发 中间件
Nestjs(四)中间件常见使用方式(class、函数中间件)
Nestjs(四)中间件常见使用方式(class、函数中间件)
125 5
|
3月前
|
存储 监控 Java
OpenFeign请求拦截器组件RequestInterceptor原理与使用场景
该文章讲述了OpenFeign中的请求拦截器组件RequestInterceptor的原理及其常见使用场景。
OpenFeign请求拦截器组件RequestInterceptor原理与使用场景
|
5月前
|
JavaScript
vue 请求拦截器 的响应拦截器有几种?
vue 请求拦截器 的响应拦截器有几种?
|
Java API Spring
【异常】Feign 调用api模块直接进入fallback的问题解决办法
【异常】Feign 调用api模块直接进入fallback的问题解决办法
330 0
|
消息中间件 Java Kafka
SpringBoot中使用异步方法优化Service逻辑,提高接口响应速度
异步方法适用于逻辑与逻辑之间可以相互分割互不影响的业务中, 如生成验证码和发送验证码组成的业务, 其实无需等到真正发送成功验证码才对客户端进行响应, 可以让短信发送这一耗时操作转为异步执行, 解耦耗时操作和核心业务;
|
6月前
|
Java Spring
SpringBoot+async异步调用接口以及几个任务同时完成和异步接口实现和调用
SpringBoot+async异步调用接口以及几个任务同时完成和异步接口实现和调用
136 0
|
6月前
|
资源调度 JavaScript API
vue封装axios请求接口并添加前置拦截器和响应拦截器
vue封装axios请求接口并添加前置拦截器和响应拦截器
84 0
|
前端开发 中间件
[Nestjs] 中间件拦截机制
在NestJS中,中间件拦截机制提供了一种在请求和响应之间对请求进行拦截、修改或中断的方式。中间件拦截器可以用于执行通用的处理逻辑、路由守卫、身份验证、日志记录等操作。
214 0
|
Java Spring
SpringMVC源码分析:一个request请求的完整流程和各组件介绍
SpringMVC源码分析:一个request请求的完整流程和各组件介绍
48 0
|
Java BI Spring
Srping注解之@Async:SpringBoot 实现异步调用
Srping注解之@Async:SpringBoot 实现异步调用
108 0