Limita frequenza delle chiamate per sottoscrizione

SI APPLICA A: Tutti i livelli di Gestione API

Il criterio rate-limit impedisce picchi d'uso dell'API per ogni sottoscrizione impostando la frequenza delle chiamate su un numero specificato per un periodo di tempo specificato. Quando viene superata la frequenza delle chiamate, il chiamante riceve il codice di stato della risposta 429 Too Many Requests.

Per comprendere la differenza tra limiti di velocità e quote, vedere Limiti di frequenza e quote.

Attenzione

A causa della natura distribuita dell'architettura di limitazione, la limitazione della velocità non è mai completamente accurata. La differenza tra le richieste configurate e il numero attuale di richieste consentite varia in base al volume e alla frequenza delle richieste, alla latenza del back-end e ad altri fattori.

Nota

Impostare gli elementi e gli elementi figlio del criterio nell'ordine specificato nell'istruzione dei criteri. Altre informazioni su come impostare o modificare i criteri di Gestione API.

Istruzione del criterio

<rate-limit calls="number" renewal-period="seconds"  retry-after-header-name="custom header name, replaces default 'Retry-After'" 
        retry-after-variable-name="policy expression variable name"
        remaining-calls-header-name="header name"  
        remaining-calls-variable-name="policy expression variable name"
        total-calls-header-name="header name">
    <api name="API name" id="API id" calls="number" renewal-period="seconds" >
        <operation name="operation name" id="operation id" calls="number" renewal-period="seconds" />
    </api>
</rate-limit>

Attributi

Attributo Descrizione Richiesto Valore predefinito
calls Numero totale massimo di chiamate consentite durante l'intervallo di tempo specificato in renewal-period. Le espressioni di criteri non sono consentite. N/D
renewal-period Lunghezza in secondi della finestra temporale scorrevole durante la quale il numero di richieste consentite non deve superare il valore specificato in calls. Valore massimo consentito: 300 secondi. Le espressioni di criteri non sono consentite. N/D
retry-after-header-name Nome di un'intestazione di risposta personalizzata il cui valore è l'intervallo di ripetizione consigliato in secondi dopo il superamento della frequenza di chiamata specificata. Le espressioni di criteri non sono consentite. No Retry-After
retry-after-variable-name Nome di una variabile che archivia l'intervallo di ripetizione dei tentativi consigliato in secondi dopo il superamento della frequenza di chiamata specificata. Le espressioni di criteri non sono consentite. No N/D
remaining-calls-header-name Nome di un'intestazione di risposta il cui valore dopo ogni esecuzione dei criteri è il numero di chiamate rimanenti consentite per l'intervallo di tempo specificato in renewal-period. Le espressioni di criteri non sono consentite. No N/D
remaining-calls-variable-name Nome di una variabile che dopo ogni esecuzione dei criteri archivia il numero di chiamate rimanenti consentite per l'intervallo di tempo specificato in renewal-period. Le espressioni di criteri non sono consentite. No N/D
total-calls-header-name Nome di un'intestazione di risposta il cui valore è il valore specificato in calls. Le espressioni di criteri non sono consentite. No N/D

Elementi

Elemento Descrizione Richiesto
api Aggiungere almeno uno di questi elementi per imporre un limite di frequenza delle chiamate alle API all'interno del prodotto. I limiti alla frequenza delle chiamate API e al prodotto vengono applicati in modo indipendente. È possibile fare riferimento all'API tramite name o id. Se vengono specificati entrambi gli attributi, verrà usato id e name verrà ignorato. No
operation (operazione) Aggiungere almeno uno di questi elementi per imporre un limite di frequenza delle chiamate alle operazioni all'interno di un'API. I limiti alla frequenza delle chiamate alle operazioni, all'API e al prodotto vengono applicati in modo indipendente. È possibile fare riferimento all'operazione tramite name o id. Se vengono specificati entrambi gli attributi, verrà usato id e name verrà ignorato. No

attributi api

Attributo Descrizione Richiesto Valore predefinito
name Il nome dell'API a cui si desidera applicare il limite di frequenza. È necessario specificare name o id. N/D
id ID dell'API per cui applicare il limite di velocità. È necessario specificare name o id. N/D
calls Numero totale massimo di chiamate consentite durante l'intervallo di tempo specificato in renewal-period. Le espressioni di criteri non sono consentite. N/D
renewal-period Lunghezza in secondi della finestra temporale scorrevole durante la quale il numero di richieste consentite non deve superare il valore specificato in calls. Valore massimo consentito: 300 secondi. Le espressioni di criteri non sono consentite. N/D

attributi dell'operazione

Attributo Descrizione Richiesto Valore predefinito
name Nome dell'operazione per cui applicare il limite di velocità. È necessario specificare name o id. N/D
id ID dell'operazione per cui applicare il limite di velocità. È necessario specificare name o id. N/D
calls Numero totale massimo di chiamate consentite durante l'intervallo di tempo specificato in renewal-period. Le espressioni di criteri non sono consentite. N/D
renewal-period Lunghezza in secondi della finestra temporale scorrevole durante la quale il numero di richieste consentite non deve superare il valore specificato in calls. Valore massimo consentito: 300 secondi. Le espressioni di criteri non sono consentite. N/D

Utilizzo

Note sull'utilizzo

  • Questo criterio può essere impiegato una sola volta per ogni definizione di criterio.
  • Questo criterio viene applicato solo quando si accede a un'API usando una chiave di sottoscrizione.
  • I conteggi dei limiti di frequenza in un gateway self-hosted possono essere configurati per la sincronizzazione locale (tra le istanze del gateway tra i nodi del cluster), ad esempio tramite la distribuzione del grafico Helm per Kubernetes o usando i modelli di distribuzione portale di Azure. Tuttavia, i conteggi dei limiti di frequenza non vengono sincronizzati con altre risorse del gateway configurate nell'istanza di Gestione API, incluso il gateway gestito nel cloud. Ulteriori informazioni

Esempio

Nell'esempio seguente il limite di frequenza per sottoscrizione è di 20 chiamate per 90 secondi. Dopo ogni esecuzione dei criteri, le chiamate rimanenti consentite nel periodo di tempo vengono archiviate nella variabile remainingCallsPerSubscription.

<policies>
    <inbound>
        <base />
        <rate-limit calls="20" renewal-period="90" remaining-calls-variable-name="remainingCallsPerSubscription"/>
    </inbound>
    <outbound>
        <base />
    </outbound>
</policies>

Per ulteriori informazioni sull'utilizzo dei criteri, vedere: