在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,然后在拦截器中进行处理。

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

相关文章
|
5月前
|
前端开发 数据库
两步教你ruoyi若依跳过前端拦截器变成自己的前端
如何通过修改前端配置和后端设置来跳过若依(RuoYi)前端的token验证,以便复用其前端框架并将其变成自己的前端。
 两步教你ruoyi若依跳过前端拦截器变成自己的前端
|
6月前
|
XML 前端开发 JavaScript
JavaEE:http请求 | 过滤器 | 同步与异步请求 | 跨域问题 | axios框架 有这一篇就够!
JavaEE:http请求 | 过滤器 | 同步与异步请求 | 跨域问题 | axios框架 有这一篇就够!
|
7月前
|
JavaScript
vue 请求拦截器 的响应拦截器有几种?
vue 请求拦截器 的响应拦截器有几种?
|
7月前
|
监控 前端开发 Java
Filter和Interceptor都是用于在请求处理的不同阶段进行处理的组件
Filter和Interceptor都是用于在请求处理的不同阶段进行处理的组件
37 0
|
JSON 数据格式
HttpClient远程调用基本使用(详解)
HttpClient远程调用基本使用(详解)
362 0
|
8月前
|
资源调度 JavaScript API
vue封装axios请求接口并添加前置拦截器和响应拦截器
vue封装axios请求接口并添加前置拦截器和响应拦截器
103 0
|
8月前
|
前端开发
Nestjs(五)异常处理方式(异常过滤器)
Nestjs(五)异常处理方式(异常过滤器)
148 0
|
JSON JavaScript 前端开发
axios拦截器及封装
axios拦截器及封装
|
Java Spring
SpringMVC源码分析:一个request请求的完整流程和各组件介绍
SpringMVC源码分析:一个request请求的完整流程和各组件介绍
57 0
|
JSON JavaScript 前端开发
Axios详解以及拦截器的配置
认识了,就要进一步了解
1168 0