Skip to content

ApiThrottlingConfig

Thiago da Rosa de Bustamante edited this page Feb 6, 2018 · 1 revision

Configure throttling (Rate Limits) for API requests.

The Throttling configuration object must be included in the API config and supports the following properties:

Property Type Description Required
timeWindow string or number How long to keep records of requests in memory. You can inform the amount of milisencods, or use a human-interval string. Defaults to '1 minute' false
delayAfter number Max number of connections during timeWindow before starting to delay responses. false
delay string or number How long to delay the response, multiplied by (number of recent hits - delayAfter). You can inform the amount of milisencods, or use a human-interval string false
max number Max number of connections during timeWindow before sending a 429 response. Defaults to 5. false
message string Error message returned when max is exceeded. Defaults to 'Too many requests, please try again later.' false
statusCode number HTTP status code returned when max is exceeded. Defaults to 429. false
headers boolean If true, enable header to show request limit and current usage. false
keyGenerator MiddlewareConfig An installed 'throttling/keyGenerators' middleware function, called to identify the source of the request. By default user IP address (req.ip) is used as key. false
skip MiddlewareConfig An installed 'throttling/skip' middleware function, called to verify if the throttling engine should not intercept some requests. false
handler MiddlewareConfig An installed 'throttling/handlers' middleware function, called when the max limit is exceeded. false
group string[] A list of group names that should be controlled by this engine. If not provided, everything will be controlled. false
disableStats boolean If true, disable the statistical data recording for throttling events. false
statsConfig StatsConfig Configurations for the throttling stats. false
use string Import a configuration from gateway config session false

Example:

 {
    "throttling": [
        {
            "timeWindow": "one minute",
            "max": 100,
            "delayAfter": 90,
            "delay": "1 second",
            "group": ["Group1"],
            "keyGenerator": {
                "name": "myThrollingKeyMiddleware"
            }
        }
    ]
 }

or

 {
    "throttling": [
        {
            "use": "my-throttling-config",
            "group": ["group1"]
        }
    ]
 }
Clone this wiki locally