Rate Limiting
Die API begrenzt Anfragen mithilfe eines Leaky-Bucket-Algorithmus. Jede Anfrage kostet eine bestimmte Anzahl an Einheiten, und diese Einheiten fließen mit konstanter Rate aus dem Bucket ab. So bleibt der Datenverkehr gleichmäßig, während kurze Lastspitzen weiterhin möglich sind.
GraphQL API
Das Rate Limiting der GraphQL API richtet sich nach den Kosten jeder Anfrage und nicht nach einer festen Anzahl von Anfragen. Die folgenden Abschnitte beschreiben bewährte Vorgehensweisen, um diese Kosten niedrig zu halten, und wie Sie Ihren aktuellen Rate-Limit-Status auslesen.
Bewährte Vorgehensweisen
- Verwenden Sie Subscriptions anstelle von Polling mit Queries, um zu erfahren, wann sich Daten ändern.
- Fragen Sie nur die Felder ab, die Sie benötigen, und verwenden Sie
filter, um Listen-Queries einzugrenzen. - Listen-Queries geben bis zu 100 Datensätze pro Seite zurück, aber eine größere Seite kostet mehr als eine kleinere. Das Abrufen von 100 Datensätzen in einer Anfrage kostet mehr als das Abrufen von 10, fordern Sie daher lieber weniger Datensätze an als mehr. Details finden Sie unter Pagination.
- Wenn eine Anfrage mit einem
429-Fehler abgelehnt wird, ist Ihr Bucket voll. Senden Sie keine weiteren Anfragen und stellen Sie neue Anfragen erst, nachdem die durchresetangegebene Zeit verstrichen ist.
Rate Limit
Um die API vor zu komplexen oder ressourcenintensiven Queries zu schützen, wird jeder Anfrage ein Kostenwert zugewiesen, der sich nach der Menge der angeforderten Daten richtet. Jede Antwort auf eine gültige Anfrage oder auf eine Anfrage, die an der Geschäftsvalidierung scheitert, enthält ein extensions.cost-Objekt mit den Kosten der Anfrage und dem Status Ihres Rate Limits. Wenn eine Anfrage die GraphQL-Schemavalidierung nicht besteht, wird es vollständig weggelassen.
cost· Integer- Die Kosten der aktuellen Anfrage in Einheiten.
limit· Integer- Die maximal zulässigen Kosten in Einheiten im aktuellen Rate-Limit-Zeitfenster.
used· Integer- Wie viele Einheiten in diesem Zeitfenster bereits verbraucht wurden.
remaining· Integer- Wie viele Einheiten Ihnen noch zur Verfügung stehen, bevor das Limit erreicht ist.
reset· Integer- Ein UNIX-Zeitstempel in Sekunden, der angibt, wann das Kontingent zurückgesetzt wird.
REST API
Das Rate Limiting der REST API gilt für den Kachel-Service. Anders als bei der GraphQL API wird der Rate-Limit-Status über HTTP-Antwort-Header zurückgegeben, und jede Anfrage hat feste Kosten von 1 Einheit. Diese Header werden bei jeder Anfrage zurückgegeben, auch bei fehlgeschlagenen.
x-ratelimit-cost· Integer- Die Kosten der aktuellen Anfrage in Einheiten. Bei REST-Anfragen immer
1. x-ratelimit-limit· Integer- Die maximal zulässigen Kosten in Einheiten im aktuellen Rate-Limit-Zeitfenster.
x-ratelimit-used· Integer- Wie viele Einheiten in diesem Zeitfenster bereits verbraucht wurden.
x-ratelimit-remaining· Integer- Wie viele Einheiten Ihnen noch zur Verfügung stehen, bevor das Limit erreicht ist.
x-ratelimit-reset· Integer- Ein UNIX-Zeitstempel in Sekunden, der angibt, wann das Kontingent zurückgesetzt wird.
Aktuelle Limits
Rate Limits gelten pro Kunde in einem Zeitfenster von einer Minute. Derzeit ist noch kein Standardlimit festgelegt. Die Limits werden individuell pro Kunde konfiguriert, bis 2027 Standardlimits eingeführt werden.
Für einige Queries und Mutationen gelten zudem individuelle Limits, die niedriger sind als Ihr Gesamtlimit. Diese werden pro Produkt und teilweise pro Anfrage festgelegt, nicht global.
War dieser Inhalt hilfreich?