РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗jsnsSpThGl 128 of 201 menu
◀ ▶

Общий лимит в Nest

Защитник уже стоит на каждом адресе, но без явной политики в модуле счётчик не к чему привязать. Клиент может обходить отдельные страницы, если лимит задан только на одном контроллере.

В массиве настроек ThrottlerModule.forRoot указывают ttl в миллисекундах и limit как максимум обращений за это окно. Одна запись в массиве действует везде, где срабатывает общий защитник, включая новые контроллеры.

Покажем на примере постов:

import { Controller, Get } from '@nestjs/common'; @Controller('posts') export class PostController { @Get() getPosts(): string { return 'All posts'; } @Get('latest') getLatest(): string { return 'Latest post'; } }

Оба адреса делят одну политику из корневого модуля:

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, чтобы оно действовало на все адреса API.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить