Hastighetsbegränsningsplugin

Simulerar hastighetsbegränsningsbeteenden.

Skärmbild av en kommandotolk med Dev Proxy som simulerar hastighetsbegränsning på GitHub-API:er.

Konfigurationsexempel

{
  "$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
  }
}

Konfigurationsegenskaper

Egenskap Beskrivning Standard
headerLimit Namnet på svarshuvudet som kommunicerar hastighetsbegränsningsgränsen RateLimit-Limit
headerRemaining Namnet på svarshuvudet som kommunicerar det återstående antalet resurser före återställningen RateLimit-Remaining
headerReset Namnet på svarshuvudet som kommunicerar den återstående tiden tills återställningen RateLimit-Reset
headerRetryAfter Namnet på svarshuvudet som kommunicerar återförsök efter period Retry-After
costPerRequest Hur många resurser kostar en begäran 2
resetTimeWindowSeconds Hur lång tid i sekunder till nästa återställning 60
warningThresholdPercent Den procentandel av användningen som överskrids börjar returnera hastighetsbegränsning för svarshuvuden 80
rateLimit Antal resurser för ett tidsfönster 120
whenLimitExceeded Det beteende som plugin-programmet ska använda när gränsen överskrids. Använd Throttle eller Custom. Throttle
resetFormat Det format som används för att avgöra när hastighetsgränsen återställs. Använd SecondsLeft eller UtcEpochSeconds. SecondsLeft
customResponseFile Fil som innehåller ett anpassat felsvar som används när gränsen överskrids. rate-limit-response.json

Kommandoradsalternativ

Ingen

Remarks

Anpassad svarstext

Om du anger body egenskapen i den anpassade svarsfilen till ett JSON-objekt eller en matris serialiserar Dev Proxy den till JSON. Om du ställer in den på en sträng skickar Dev Proxy strängen as-is, utan omgivande citattecken. Eftersom Dev Proxy som standard Content-Type anger rubriken till application/json, anger du rubriken så att den Content-Type matchar ditt innehåll när du returnerar icke-JSON-innehåll, till exempel text/plain.

Anpassat svarshuvud Content-Type

När whenLimitExceeded är inställt på Custom och det anpassade svaret har ett body men inte definierar ett Content-Type huvud returnerar Dev Proxy svaret med Content-Type: application/json huvudet. Om du vill returnera en annan innehållstyp lägger du till huvudet i Content-Type den anpassade svarsfilen. Dev Proxy använder det värde som du anger.

Nästa steg