RateLimitOptions
interfaz Desde 1.2.0
Límite de peticiones de un endpoint de API o un procedimiento RPC (desde 1.2): como mucho
limit peticiones por ventana fija de window. Por encima, la respuesta es
429 RATE_LIMITED con Retry-After, antes de validar la entrada y de ejecutar el handler.
Sin key, cada IP de cliente tiene su contador (las IPv6 por su red /64) cuando Meeko la conoce:
la de la conexión o, con MEEKO_TRUST_PROXY, la de X-Forwarded-For o la de CF-Connecting-IP
(con cloudflare, desde 1.8), como clientAddress. Si no la conoce, todos los
clientes comparten el contador de la ruta.
import type { RateLimitOptions } from "@meekojs/meeko/server";Código fuente src/server/runtime/rate-limit.ts:27
Declaración #
interface RateLimitOptions<S = unknown> {
readonly limit: number
readonly window: number | string
readonly key?: (context: RequestContext<S>) => string | Promise<string>
}Parámetros de tipo #
-
S= unknown Tipo de los servicios.
Ejemplo #
import type { RateLimitOptions } from "@meekojs/meeko/server";
const login: RateLimitOptions = { limit: 5, window: "5m" };
const perUser: RateLimitOptions = { limit: 100, window: "1h", key: ({ session }) => String(session.current?.id ?? "anon") };Propiedades #
window
#
readonly window: number | stringDuración de la ventana: milisegundos o un texto como "30s", "5m", "1h" o "1d".
key
#
readonly key?: (context: RequestContext<S>) => string | Promise<string>Clave del contador dentro de la ruta, en lugar de la IP del cliente; por ejemplo, el usuario de la sesión. Se ejecuta antes de validar la entrada, así que no recibe el cuerpo.
Véase también #
- Límite de peticiones: rateLimit Framework full-stack