Référence d'API — @nodefony/http — rateLimit
stable
Documentation › Référence d’API › @nodefony/http › rateLimit
Générée depuis les déclarations de types publiées de
@nodefony/http10.0.0-beta.5 : exactement ce que reçoit une application qui l’installe. Cette page n’existe dans aucun dépôt — pour la corriger, on corrige le TSDoc du code.
@nodefony/http#
import { … } from "@nodefony/http" — 4 symboles.
Classes (1)#
MemoryRateLimitStore#
class MemoryRateLimitStore implements IRateLimitStore
Store de rate-limit en mémoire — algorithme fixed window par clé (IP).
constructor(options: IRateLimitOptions, now?: () => number)hit(key: string): RateLimitVerdict— Enregistre un hit pourkey(IP cliente résolue) et renvoie le verdict de la fenêtre courante.gc(nowMs?: number): number— Purge les fenêtres expirées (resetAt <= now).listPage(query: IRateLimitListQuery): Promise<IPage<IRateLimitEntry>>— {@inheritDoc IRateLimitStore.listPage}get trackedCount(): number— Nombre de clés (IP) actuellement suivies — introspection / métrique.get rejectedTotal(): number— Total cumulé de requêtes rejetées (429) depuis le boot — métrique.
Interfaces (3)#
IRateLimitOptions#
interface IRateLimitOptions
Options de construction d’un IRateLimitStore.
readonly windowMs: number— Largeur de la fenêtre fixe, en millisecondes.readonly max: number— Nombre max de requêtes autorisées par clé (IP) et par fenêtre.readonly maxTracked: number— Borne mémoire : nombre max de clés (IP) suivies simultanément.
IRateLimitStore#
interface IRateLimitStore
Compteur de rate-limit par clé (IP). Implémentation par défaut : (“./MemoryRateLimitStore”).MemoryRateLimitStore (fenêtre fixe, en mémoire).
hit(key: string): RateLimitVerdict— Enregistre un hit pourkey(IP cliente résolue) et renvoie le verdict de la fenêtre courante.gc(nowMs?: number): number— Purge les fenêtres expirées (resetAt <= now).listPage(query: IRateLimitListQuery): Promise<IPage<IRateLimitEntry>>— Page des clés suivies — introspection admin (« qui me martèle ?readonly trackedCount: number— Nombre de clés (IP) actuellement suivies — introspection / métrique.readonly rejectedTotal: number— Total cumulé de requêtes rejetées (429) depuis le boot — métrique.
RateLimitVerdict#
interface RateLimitVerdict
Verdict rendu par IRateLimitStore.hit — porte tout le nécessaire pour émettre les en-têtes X-RateLimit-* (+ Retry-After en cas de rejet) sans relire l’état du store.
readonly limited: boolean—truesi la requête dépasse le quota de la fenêtre → réponse429.readonly limit: number— Plafond de la fenêtre — en-têteX-RateLimit-Limit.readonly remaining: number— Requêtes restantes dans la fenêtre courante (X-RateLimit-Remaining, ≥ 0).readonly resetAtMs: number— Fin de la fenêtre courante, en ms epoch (X-RateLimit-Reset=⌈/1000⌉).readonly retryAfterS: number— Secondes jusqu’au reset (Retry-After) ;0si la requête n’est pas limitée.