[Nestjs] Limita el número de solicitudes

Se puede limitar la cantidad de solicitudes en NestJS utilizando middleware. Aquí hay una forma común:

  1. Cree un middleware que limite la cantidad de solicitudes: cree un RateLimitMiddlewaremiddleware llamado que se utilice para limitar la cantidad de solicitudes. En este middleware, puede implementar una lógica de limitación de solicitudes utilizando bibliotecas de terceros (como express-rate-limit, fastify-rate-limit), que proporcionan formas convenientes de configurar cada dirección IP u otro identificador. peticiones.

    import { Injectable, NestMiddleware } from '@nestjs/common';
    import rateLimit from 'express-rate-limit';
    
    @Injectable()
    export class RateLimitMiddleware implements NestMiddleware {
      use(req: any, res: any, next: () => void): any {
        return rateLimit({
          windowMs: 5 * 60 * 1000, // 5分钟内
          max: 100, // 最多允许100次请求
          message: '请求过于频繁,请稍后再试。',
        })(req, res, next);
      }
    }
    

  2. Uso del middleware en el módulo raíz: en el módulo raíz de su aplicación NestJS (generalmente app.module.ts), use el método en el ámbito global use()para aplicar el middleware.

    import { Module, NestModule, MiddlewareConsumer } from '@nestjs/common';
    import { RateLimitMiddleware } from './rate-limit.middleware';
    import { AppController } from './app.controller';
    import { AppService } from './app.service';
    
    @Module({
      controllers: [AppController],
      providers: [AppService],
    })
    export class AppModule implements NestModule {
      configure(consumer: MiddlewareConsumer) {
        consumer.apply(RateLimitMiddleware).forRoutes('*');
      }
    }
    

    En el código anterior, RateLimitMiddlewarese aplica a todas las rutas ( '*')

De esta manera, el número de solicitudes se limitará al número máximo de solicitudes por dirección IP u otro identificador dentro del período de tiempo especificado. Puede ajustar el tiempo de la ventana y el número máximo de solicitudes según sus necesidades.

Tenga en cuenta que el ejemplo anterior utiliza express-rate-limitla biblioteca para implementar la limitación de solicitudes. Si está utilizando Fastify u otro marco HTTP, puede elegir la biblioteca correspondiente para implementar funciones similares.

Además, también puede personalizar el middleware según las necesidades comerciales para implementar la lógica de limitar el número de solicitudes.

Supongo que te gusta

Origin blog.csdn.net/wuzhangting/article/details/132472395
Recomendado
Clasificación