Saltar al contenido
Meeko
Escribe para buscar en las guías y en la referencia de la API. Ábrela desde cualquier página con / o Ctrl K; muévete con las flechas y entra con Intro.
Empezar

Contenidos

En esta página

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.

ts
import type { RateLimitOptions } from "@meekojs/meeko/server";

Código fuente src/server/runtime/rate-limit.ts:27

Declaración #

ts
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 #

ts
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 #

limit #

propiedad sólo lectura

readonly limit: number

Peticiones permitidas en cada ventana; un entero positivo.

window #

propiedad sólo lectura

readonly window: number | string

Duración de la ventana: milisegundos o un texto como "30s", "5m", "1h" o "1d".

key #

propiedad sólo lectura opcional

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 #

¿Te sirvió esta página?

Añadir un comentario

Se envía al elegir «Sí» o «No». Solo se guardan la página, tu respuesta y el comentario: ni cookies ni datos tuyos.

0 de 2000 caracteres

Editar en GitHub: packages/meeko/src/server/runtime/rate-limit.ts