Configurer le middleware de limitation du débit
Appliquez des limites de débit par point de terminaison et par politique.
Configurer le middleware de limitation du débit est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 4 leçons au total.
AddRateLimiter
La configuration commence par AddRateLimiter dans le conteneur de services. Vous définissez une ou plusieurs stratégies nommées et, éventuellement, un code d’état global pour les rejets.
builder.Services.AddRateLimiter(options =>
{
options.RejectionStatusCode =
StatusCodes.Status429TooManyRequests;
});Une stratégie à fenêtre fixe
AddFixedWindowLimiter enregistre une stratégie nommée. Définissez la limite d’autorisations, la durée de la fenêtre et le comportement de la file d’attente.
options.AddFixedWindowLimiter("fixed", limiter =>
{
limiter.PermitLimit = 100;
limiter.Window = TimeSpan.FromMinutes(1);
limiter.QueueProcessingOrder = QueueProcessingOrder.OldestFirst;
limiter.QueueLimit = 0;
});Une stratégie à fenêtre glissante
AddSlidingWindowLimiter ajoute SegmentsPerWindow pour contrôler la granularité du lissage.
options.AddSlidingWindowLimiter("sliding", limiter =>
{
limiter.PermitLimit = 100;
limiter.Window = TimeSpan.FromMinutes(1);
limiter.SegmentsPerWindow = 6;
limiter.QueueLimit = 0;
});Une stratégie de seau de jetons
AddTokenBucketLimiter définit la capacité du seau et le rythme de réapprovisionnement.
options.AddTokenBucketLimiter("token", limiter =>
{
limiter.TokenLimit = 100;
limiter.TokensPerPeriod = 20;
limiter.ReplenishmentPeriod = TimeSpan.FromSeconds(10);
limiter.QueueLimit = 0;
});Une stratégie de concurrence
AddConcurrencyLimiter plafonne le nombre de requêtes simultanées.
options.AddConcurrencyLimiter("concurrent", limiter =>
{
limiter.PermitLimit = 5;
limiter.QueueLimit = 10;
limiter.QueueProcessingOrder = QueueProcessingOrder.OldestFirst;
});Ajouter l’intergiciel
Activez la limitation du débit dans la chaîne de traitement avec UseRateLimiter. Placez-la tôt, après le routage.
var app = builder.Build();
app.UseRateLimiter();
app.MapControllers();RequireRateLimiting
Appliquez une stratégie nommée aux points de terminaison avec RequireRateLimiting (API minimale) ou l’attribut [EnableRateLimiting] (contrôleurs).
app.MapGet("/search", () => Results.Ok())
.RequireRateLimiting("token");
// Controller equivalent:
// [EnableRateLimiting("token")]Désactiver sur certains points de terminaison
Exemptez un point de terminaison d’un limiteur de groupe ou global avec DisableRateLimiting ou [DisableRateLimiting].
app.MapGet("/health", () => Results.Ok())
.DisableRateLimiting();Un limiteur global avec des partitions
GlobalLimiter s’applique à chaque requête. Utilisez PartitionedRateLimiter.Create pour attribuer à chaque utilisateur ou adresse IP son propre compteur.
options.GlobalLimiter = PartitionedRateLimiter.Create<HttpContext, string>(
context =>
{
var key = context.User.Identity?.Name
?? context.Connection.RemoteIpAddress?.ToString()
?? "anon";
return RateLimitPartition.GetFixedWindowLimiter(key, _ =>
new FixedWindowRateLimiterOptions
{
PermitLimit = 100,
Window = TimeSpan.FromMinutes(1)
});
});Personnaliser le rejet
OnRejected vous permet d’ajouter un en-tête Retry-After ou un corps de réponse convivial lorsqu’une requête est limitée.
options.OnRejected = async (context, token) =>
{
if (context.Lease.TryGetMetadata(
MetadataName.RetryAfter, out var retry))
context.HttpContext.Response.Headers.RetryAfter =
((int)retry.TotalSeconds).ToString();
await context.HttpContext.Response
.WriteAsync("Rate limit exceeded.", token);
};Appliquer à un groupe de routes
Associez une stratégie à un groupe de routes entier afin que tous les points de terminaison qu’il contient partagent la même limite.
var api = app.MapGroup("/api")
.RequireRateLimiting("fixed");
api.MapGet("/products", () => Results.Ok());
api.MapGet("/orders", () => Results.Ok());Vérification rapide
Vérifiez la configuration de l’intergiciel.
Récapitulatif
Vous avez configuré la limitation du débit :
AddRateLimiterdéfinit les stratégies de fenêtre fixe, de fenêtre glissante, de seau de jetons et de concurrence.UseRateLimiteractive l’intergiciel ;RequireRateLimitingapplique une stratégie.GlobalLimiterassocié àPartitionedRateLimiterfournit des compteurs propres à chaque client.OnRejectedpersonnalise la réponse 429.
Ensuite : la mise en cache de sortie.
Questions Fréquemment Posées
La leçon « Configurer le middleware de limitation du débit » est-elle gratuite ?
Oui — le texte complet de « Configurer le middleware de limitation du débit » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Configurer le middleware de limitation du débit » ?
Appliquez des limites de débit par point de terminaison et par politique. Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer C# Academy ?
Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Configurer le middleware de limitation du débit » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?
Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Algorithmes de limitation du débit
- Configurer le middleware de limitation du débit
- Bases de la mise en cache des sorties
- Politiques de cache et invalidation