Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Genom att använda hastighetsbegränsning kan du begränsa antalet API-anrop som en användare eller tjänst kan göra under en viss tidsperiod. Hastighetsbegränsning hjälper dig att säkerställa rättvis användning och förhindrar att en enskild användare eller tjänst monopoliserar API-resurserna. Azure API Management är ett bekvämt sätt att implementera hastighetsbegränsning för dina API:er.
Varför ska du använda Azure API Management?
Azure API Management är en kraftfull och mångsidig molntjänst som hjälper organisationer att publicera API:er till externa, partnerbaserade och interna utvecklare. Den innehåller verktyg för att skydda, hantera och skala API-anrop. En av dess funktioner är att kontrollera hastighetsbegränsningen, vilket är användbart för att upprätthålla hälsotillståndet och tillförlitligheten för dina API:er.
Konfigurera hastighetsbegränsning i Azure API Management
Azure API Management använder principer för att framtvinga hastighetsbegränsning. Du kan definiera dessa principer i olika omfång: global, produkt eller API-specifik. Med den här flexibiliteten kan du anpassa hastighetsbegränsningen enligt api:ets krav och användningsmönster.
Innan du börjar implementera hastighetsbegränsning ska du bestämma hastighetsgränserna. Vilka gränser du anger beror på ditt API:s kapacitet och vilken trafik du förväntar dig. Vanliga gränser anges som antalet anrop per sekund, minut eller timme. Du kan till exempel tillåta 1 000 samtal per minut per användare.
Om du vill definiera hastighetsbegränsningar för ditt API i Azure API Management använder du rate-limit
principerna eller rate-limit-by-key
. Principen rate-limit
anger en gräns för alla användare. Principen rate-limit-by-key
tillåter gränser per identifierad nyckel (till exempel en prenumeration eller ett användar-ID).
Här är ett exempel på en princip som begränsar anropen till 1 000 per minut.
<policies>
<inbound>
<base />
<rate-limit calls="1000" renewal-period="60" />
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>
När du överskrider det angivna antalet anrop skickar Azure API Management en 429 Too Many Requests
statuskod, tillsammans med retry-after
svarshuvudet och ett meddelande som anger när du kan försöka igen.
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."
}
Exponera information om hastighetsbegränsning i svarshuvuden
Som standardinställning exponerar Azure API Management inte information om hastighetsbegränsningar i svarshuvudena. Att inte kommunicera hastighetsgränser gör det svårt för appar att undvika att överskrida gränsen och begränsas. För att exponera information om hastighetsbegränsning utökar du rate-limit
principen med remaining-calls-header-name
och total-calls-header-name
egenskaperna.
<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>
När du anropar ditt API nu innehåller varje svar rubrikerna ratelimit-remaining
och ratelimit-limit
. Rubrikerna kommunicerar hur många fler anrop API:et kan hantera innan det överskrider gränsen.
Sammanfattning
Genom att implementera hastighetsbegränsning i Azure API Management kan du skapa robusta och skalbara API:er. Genom att använda hastighetsbegränsning kan du se till att ditt API hanterar användarna på ett tillförlitligt och effektivt sätt. Nyckeln är att hitta rätt balans. Om en hastighetsgräns är för strikt kan du hindra användbarheten. Om en hastighetsgräns är för överseende riskerar du att överbelasta ditt API. Med noggrann planering och kontinuerlig övervakning kan du uppnå den här balansen och upprätthålla en felfri API-miljö.