Leer hoe Zonos querykosten berekent op basis van complexiteit.
Zonos rate-limit GraphQL API-verzoeken op basis van querycomplexiteit in plaats van requestaantal. Zo blijft gebruik eerlijk terwijl u precies de data opvraagt die u nodig hebt.
Traditionele REST API's gebruiken request-based rate limiting waarbij elk verzoek dezelfde credits kost, of u nu één veld of honderden ophaalt en of u leest of wijzigt — ondanks het grote verschil in serverbelasting.
De query complexity-based aanpak van GraphQL lost dit op door kosten te berekenen op basis van de daadwerkelijk opgevraagde data en uitgevoerde operaties. Zo krijgt u meer flexibiliteit terwijl de serverbelasting voorspelbaar blijft.
Als u uw rate limit overschrijdt, ontvangt u een foutmelding. Om rate limits effectief af te handelen:
Monitor uw complexiteit
Controleer de zonos-query-complexity-header in responses om querykosten te begrijpen en dure patronen te identificeren.
Implementeer retry-logica
Bij rate limits implementeert u exponential backoff en retry-logica. Omdat de bucket 3.000 punten per seconde vult, berekent u passende wachttijden op basis van querycomplexiteit.
Batch efficiënt
Met GraphQL kunt u meerdere queries in één verzoek opvragen:
GraphQL API rate limiting
GraphQL API rate limiting
Leer hoe Zonos querykosten berekent op basis van complexiteit.Zonos rate-limit GraphQL API-verzoeken op basis van querycomplexiteit in plaats van requestaantal. Zo blijft gebruik eerlijk terwijl u precies de data opvraagt die u nodig hebt.
Waarom complexity-based rate limiting?
Traditionele REST API's gebruiken request-based rate limiting waarbij elk verzoek dezelfde credits kost, of u nu één veld of honderden ophaalt en of u leest of wijzigt — ondanks het grote verschil in serverbelasting.
De query complexity-based aanpak van GraphQL lost dit op door kosten te berekenen op basis van de daadwerkelijk opgevraagde data en uitgevoerde operaties. Zo krijgt u meer flexibiliteit terwijl de serverbelasting voorspelbaar blijft.
Rate limit
Zonos gebruikt een point-based systeem waarbij elke query punten aftrekt op basis van complexiteit. U hebt een pool beschikbare punten die:
Zo kunt u af en toe bursts van complexe queries doen terwijl u een duurzaam requesttempo behoudt.
Hoe querykosten worden berekend
Elk GraphQL-verzoek krijgt vóór uitvoering berekende kosten:
Basiskosten
Scalar fields zoals strings, integers, ID's en booleans tellen niet mee. U betaalt alleen voor de basisoperatie en de geretourneerde objecten.
Voorbeeld: eenvoudige query
query {landedCost(id: "123") {idcreatedByshipToCountry}}Kostenuitsplitsing: 5 (basisquery) + 1 (landed cost object) = 6 punten
De scalar fields (
id,name,currency) zijn gratis.Voorbeeld: query met meerdere objecten
{orders(first: 10, filter: { status: COMPLETED }) {edges {cursornode {id}}}}Kostenuitsplitsing: 5 (basisquery) + 10 (10 orders × 1 punt elk) = 15 punten
Voorbeeld: mutation
mutation {landedCostCalculate(input: { ... }) {id}}Kostenuitsplitsing: 10 (basismutation) + ongeveer 50 (geretourneerde objecten) = 60 punten
Een typische Landed Cost-berekening kost ongeveer 60 punten in complexiteit.
Querycomplexiteit bekijken
Elke API-response bevat een
zonos-query-complexity-header met de kosten van uw query:zonos-query-complexity: 58Deze header toont precies hoeveel punten de query heeft verbruikt. Gebruik hem om API-gebruik te monitoren en dure queries te optimaliseren.
Rate limits afhandelen
Als u uw rate limit overschrijdt, ontvangt u een foutmelding. Om rate limits effectief af te handelen:
Monitor uw complexiteit
Controleer de
zonos-query-complexity-header in responses om querykosten te begrijpen en dure patronen te identificeren.Implementeer retry-logica
Bij rate limits implementeert u exponential backoff en retry-logica. Omdat de bucket 3.000 punten per seconde vult, berekent u passende wachttijden op basis van querycomplexiteit.
Batch efficiënt
Met GraphQL kunt u meerdere queries in één verzoek opvragen:
{landedCost(id: "landed_cost_123") {idcreatedAt}order(orderId: "order_123") {idstatuscreatedAt}}Best practices
Vraag alleen op wat u nodig hebt
Querycomplexiteit is evenredig met de data die u opvraagt. Structureer queries zodat u alleen velden en objecten ophaalt die u echt gebruikt.
query {order(orderId: "order_123") {idstatuscreatedAtupdatedAtitems {idnamequantityamount}shipments {id}}}Pagineer grote datasets
Bij meerdere objecten gebruikt u redelijke paginagroottes:
{orders(first: 100, filter: { status: COMPLETED }) {edges {cursornode {id}}}}Vraag 10-50 items per keer op en pagineer door resultaten, in plaats van honderden objecten in één query.
Vermijd onnodige nesting
Elk genest object verhoogt uw complexiteit. Vraag geneste data alleen op wanneer u die nodig hebt.
Was deze pagina nuttig?