Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Simulates rate-limit behaviors.
Configuration example
{
"$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
}
}
Configuration properties
| Property | Description | Default |
|---|---|---|
headerLimit |
Name of the response header that communicates the rate-limiting limit | RateLimit-Limit |
headerRemaining |
Name of the response header that communicates the remaining number of resources before the reset | RateLimit-Remaining |
headerReset |
Name of the response header that communicates the time remaining until the reset | RateLimit-Reset |
headerRetryAfter |
Name of the response header that communicates the retry-after period | Retry-After |
costPerRequest |
How many resources does a request cost | 2 |
resetTimeWindowSeconds |
How long in seconds until the next reset | 60 |
warningThresholdPercent |
The percentage of use that's when exceeded starts returning rate limiting response headers | 80 |
rateLimit |
Number of resources for a time window | 120 |
whenLimitExceeded |
The behavior the plugin should use when limit is exceeded. Use Throttle or Custom. |
Throttle |
resetFormat |
The format used to determine when the rate limit resets. Use SecondsLeft or UtcEpochSeconds. |
SecondsLeft |
customResponseFile |
File containing a custom error response used when limit is exceeded. | rate-limit-response.json |
Command line options
None
Remarks
Custom response body
If you set the body property in the custom response file to a JSON object or array, Dev Proxy serializes it to JSON. If you set it to a string, Dev Proxy sends the string as-is, without surrounding quotes. Because Dev Proxy defaults the Content-Type header to application/json, set the Content-Type header to match your content when you return non-JSON content, for example text/plain.
Custom response Content-Type header
When whenLimitExceeded is set to Custom and the custom response has a body but doesn't define a Content-Type header, Dev Proxy returns the response with the Content-Type: application/json header. To return a different content type, add the Content-Type header to the custom response file. Dev Proxy uses the value that you specify.