Come implementare la limitazione della frequenza in Azure Gestione API
Usando la limitazione della frequenza è possibile limitare il numero di chiamate API che un utente o un servizio può effettuare in un determinato intervallo di tempo. La limitazione della frequenza consente di garantire un utilizzo equo e impedire a qualsiasi singolo utente o servizio di monopolizzare le risorse API. Azure Gestione API (APIM) offre un modo pratico per implementare la limitazione della frequenza per le API.
Perché Azure Gestione API?
Azure Gestione API è un servizio cloud potente e versatile che consente alle organizzazioni di pubblicare API in sviluppatori esterni, partner e interni. Fornisce strumenti per proteggere, gestire e ridimensionare le chiamate API. Una delle sue funzionalità è il controllo della limitazione della frequenza che è utile per mantenere l'integrità e l'affidabilità delle API.
Configurare la limitazione della frequenza in Azure Gestione API
Azure Gestione API usa criteri per applicare la limitazione della frequenza. È possibile definire questi criteri in ambiti diversi: globale, prodotto o specifico dell'API. Questa flessibilità consente di personalizzare la limitazione della frequenza in base ai requisiti e ai modelli di utilizzo dell'API.
Prima di iniziare a implementare la limitazione della velocità, decidere i limiti di velocità. I limiti impostati dipendono dalla capacità dell'API e dal traffico previsto. I limiti comuni vengono impostati come numero di chiamate al secondo, minuto o ora. Ad esempio, è possibile consentire 1000 chiamate al minuto per utente.
Per definire i limiti di frequenza per l'API in Azure Gestione API, usare i rate-limit
criteri o rate-limit-by-key
. Il primo imposta un limite per tutti gli utenti, mentre quest'ultimo consente limiti per ogni chiave identificata ,ad esempio una sottoscrizione o un ID utente.
Ecco un esempio di criteri che limita le chiamate a 1000 al minuto.
<policies>
<inbound>
<base />
<rate-limit calls="1000" renewal-period="60" />
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>
Quando si supera il numero specificato di chiamate, Azure Gestione API invia un codice di stato 429 Troppe richieste, insieme all'intestazione retry-after
della risposta e a un messaggio che indica quando è possibile riprovare.
HTTP/1.1 429 Too Many Requests
content-type: application/json
retry-after: 60
{
"statusCode": 429,
"message": "Rate limit is exceeded. Try again in 60 seconds."
}
Esporre le informazioni sul limite di velocità nelle intestazioni di risposta
Per impostazione predefinita, Azure Gestione API non espone informazioni sui limiti di frequenza per le intestazioni di risposta. La mancata comunicazione dei limiti di frequenza rende difficile per le app evitare il superamento del limite e la limitazione. Per esporre le informazioni sui limiti di frequenza, estendere i rate-limit
criteri con le remaining-calls-header-name
proprietà e total-calls-header-name
.
<policies>
<inbound>
<base />
<rate-limit calls="1000" renewal-period="60" remaining-calls-header-name="ratelimit-remaining" total-calls-header-name="ratelimit-limit" />
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>
Quando si chiama ora l'API, ogni risposta include le ratelimit-remaining
intestazioni e ratelimit-limit
, che comunicano il numero di chiamate che l'API può gestire prima di superare il limite.
Riepilogo
L'implementazione della limitazione della velocità in Azure Gestione API consente di creare API affidabili e scalabili. Usando la limitazione della frequenza, è possibile assicurarsi che l'API soddisfi gli utenti in modo affidabile ed efficiente. Tenere presente che la chiave è trovare il giusto equilibrio– troppo restrittivo, e si potrebbe ostacolare l'usabilità; troppo leniente e si rischia di sovraccaricare l'API. Con un'attenta pianificazione e monitoraggio continuo, è possibile ottenere questo equilibrio e mantenere un ambiente API integro.