Подключение ограничения в Nest
Контроллеры уже отвечают на адреса, но ни один запрос пока не сравнивается с лимитом. Пакет ограничения не установлен, и Nest не знает, где хранить счётчик обращений.
Пакет @nestjs/throttler
регистрируют через
ThrottlerModule.forRoot
в корневом модуле. Чтобы правило
срабатывало на каждом адресе,
защитник ThrottlerGuard
вешают глобально через токен
APP_GUARD в провайдерах
того же модуля.
Покажем на примере постов:
npm install @nestjs/throttler
Подключим модуль и общий защитник рядом с контроллером темы:
import { Module } from '@nestjs/common';
import { APP_GUARD } from '@nestjs/core';
import { ThrottlerGuard, ThrottlerModule } from '@nestjs/throttler';
import { PostController } from './post.controller.js';
@Module({
imports: [
ThrottlerModule.forRoot([
{
ttl: 60000,
limit: 10,
},
]),
],
controllers: [PostController],
providers: [
{
provide: APP_GUARD,
useClass: ThrottlerGuard,
},
],
})
export class AppModule {}
Установите пакет ограничения
частоты, подключите его в корневом
модуле с WorkerController
и повесьте общий защитник
на приложение.