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

Ответ при превышении в Nest

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

Общий защитник сравнивает текущий счёт с лимитом из модуля. При превышении он прерывает цепочку и выбрасывает исключение ограничения: клиент получает отказ с текстом ошибки, а метод контроллера не выполняется. Текст можно задать в настройке модуля через поле errorMessage.

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

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({ throttlers: [ { ttl: 60000, limit: 3, }, ], errorMessage: 'Too many requests', }), ], controllers: [PostController], providers: [ { provide: APP_GUARD, useClass: ThrottlerGuard, }, ], }) export class AppModule {}

Контроллер списка без изменений:

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

Настройте сообщение отказа при превышении лимита в корневом модуле с WorkerController, чтобы после серии лишних обращений клиент получал отказ, а не тело списка работников.

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