Plugin de Limitation de Taux

Simule les comportements de limite de débit.

Capture d’écran d’une invite de commandes avec le proxy de développement qui simule la limitation du débit sur les API GitHub.

Exemple de configuration

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "RateLimitingPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "rateLimiting"
    }
  ],
  "rateLimiting": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/ratelimitingplugin.schema.json",
    "costPerRequest": 2,
    "rateLimit": 120
  }
}

Propriétés de configuration

Propriété Descriptif Faire défaut
headerLimit Nom de l’en-tête de réponse qui communique la limite de limitation de débit RateLimit-Limit
headerRemaining Nom de l’en-tête de réponse qui communique le nombre restant de ressources avant la réinitialisation RateLimit-Remaining
headerReset Nom de l’en-tête de réponse qui communique le temps restant jusqu’à la réinitialisation RateLimit-Reset
headerRetryAfter Nom de l’en-tête de réponse qui communique la nouvelle tentative après la période Retry-After
costPerRequest Combien de ressources coûte une demande 2
resetTimeWindowSeconds Durée en secondes jusqu’à la réinitialisation suivante soixante
warningThresholdPercent Pourcentage d’utilisation lorsque le dépassement commence à retourner des en-têtes de réponse de limitation du taux 80
rateLimit Nombre de ressources pour une fenêtre de temps 120
whenLimitExceeded Comportement que le plug-in doit utiliser lorsque la limite est dépassée. Utilisez Throttle ou Custom. Throttle
resetFormat Format utilisé pour déterminer quand la limite de débit est réinitialisée. Utilisez SecondsLeft ou UtcEpochSeconds. SecondsLeft
customResponseFile Fichier contenant une réponse d’erreur personnalisée utilisée lorsque la limite est dépassée. rate-limit-response.json

Options de ligne de commande

Aucun

Remarques

Corps de la réponse personnalisée

Si vous définissez la body propriété dans le fichier de réponse personnalisé sur un objet ou un tableau JSON, le proxy de développement le sérialise au format JSON. Si vous la définissez sur une chaîne, le proxy de développement envoie la chaîne as-is, sans guillemets environnants. Étant donné que le proxy de développement définit par défaut l’en-tête Content-Typeapplication/jsonsur , définissez l’en-tête Content-Type pour qu’il corresponde à votre contenu lorsque vous retournez du contenu non JSON, par exemple text/plain.

En-tête de réponse Content-Type personnalisé

Lorsque whenLimitExceeded la valeur est définie Custom et que la réponse personnalisée a un body en-tête mais ne définit pas d’en-tête Content-Type , le proxy de développement retourne la réponse avec l’en-tête Content-Type: application/json . Pour retourner un autre type de contenu, ajoutez l’en-tête Content-Type au fichier de réponse personnalisé. Le proxy de développement utilise la valeur que vous spécifiez.

Étape suivante