Dowiedz się, jak Zonos oblicza koszty zapytań na podstawie złożoności.
Zonos ogranicza żądania GraphQL API na podstawie złożoności zapytania, a nie liczby żądań. To zapewnia uczciwe użytkowanie, jednocześnie pozwalając Ci zażądać dokładnie potrzebnych danych.
Tradycyjne interfejsy API REST używają ograniczania szybkości na podstawie liczby żądań, gdzie każde żądanie zużywa takie same kredyty, niezależnie od tego, czy pobierasz jedno pole czy setki, czy odczytujesz czy modyfikujesz dane — pomimo znacznej różnicy w obciążeniu serwera.
Podejście GraphQL oparte na złożoności zapytań rozwiązuje ten problem, obliczając koszty na podstawie faktycznie żądanych danych i wykonywanych operacji. To daje Ci większą elastyczność w żądaniu potrzebnych informacji, jednocześnie zapewniając przewidywalne obciążenie serwera.
Każde żądanie GraphQL ma koszt obliczony przed wykonaniem:
Koszty podstawowe
Query: 5 punktów
Mutation: 10 punktów
Object: 1 punkt na zwrócony obiekt
Scalar fields: 0 punktów (bezpłatnie)
Pola skalarne takie jak ciągi znaków, liczby całkowite, identyfikatory i wartości logiczne nie zwiększają kosztu. Płacisz tylko za operację podstawową i zwrócone obiekty.
Przykład: Proste zapytanie
1query{
2 landedCost(id:"123"){
3 id
4 createdBy
5 shipToCountry
6}
7}
Podział kosztów: 5 (podstawowe zapytanie) + 1 (obiekt kosztu dostawy) = 6 punktów
Pola skalarne (id, name, currency) są bezpłatne.
Przykład: Zapytanie z wieloma obiektami
1{
2 orders(first:10, filter:{status: COMPLETED }){
3 edges {
4 cursor
5 node {
6 id
7}
8}
9}
10}
Podział kosztów: 5 (podstawowe zapytanie) + 10 (10 zamówień × 1 punkt każde) = 15 punktów
Przykład: Mutacja
1mutation{
2 landedCostCalculate(input:{...}){
3 id
4}
5}
Podział kosztów: 10 (mutacja podstawowa) + około 50 (zwrócone obiekty) = 60 punktów
Typowe obliczenie kosztu dostawy kosztuje około 60 punktów w złożoności.
Jeśli przekroczysz limit szybkości, otrzymasz komunikat o błędzie. Aby efektywnie obsługiwać limity szybkości:
Monitoruj swoją złożoność
Sprawdź nagłówek zonos-query-complexity w odpowiedziach, aby zrozumieć koszty zapytań i zidentyfikować kosztowne wzorce.
Wdróż logikę ponowienia
Jeśli osiągniesz limity szybkości, wdróż logikę exponential backoff i ponowienia. Ponieważ pula punktów uzupełnia się z szybkością 3 000 punktów na sekundę, oblicz odpowiednie czasy oczekiwania na podstawie złożoności zapytania.
Grupuj efektywnie
GraphQL pozwala Ci na żądanie wielu zapytań w jednym żądaniu:
Złożoność zapytania jest proporcjonalna do danych, które żądasz. Strukturuj swoje zapytania, aby pobrać tylko pola i obiekty, które faktycznie będziesz używać.
1query{
2 order(orderId:"order_123"){
3 id
4 status
5 createdAt
6 updatedAt
7 items {
8 id
9 name
10 quantity
11 amount
12}
13 shipments {
14 id
15}
16}
17}
Paginacja dużych zbiorów danych
Kiedy żądasz wielu obiektów, używaj rozsądnych rozmiarów stron:
1{
2 orders(first:100, filter:{status: COMPLETED }){
3 edges {
4 cursor
5 node {
6 id
7}
8}
9}
10}
Żądaj 10-50 elementów na raz i przechodź przez wyniki w miarę potrzeby, zamiast żądać setek obiektów w jednym zapytaniu.
Unikaj niepotrzebnego zagnieżdżenia
Każdy zagnieżdżony obiekt zwiększa Twoją złożoność. Żądaj tylko zagnieżdżonych danych, gdy ich rzeczywiście potrzebujesz.
Ograniczanie szybkości GraphQL API
Ograniczanie szybkości GraphQL API
Dowiedz się, jak Zonos oblicza koszty zapytań na podstawie złożoności.
Zonos ogranicza żądania GraphQL API na podstawie złożoności zapytania, a nie liczby żądań. To zapewnia uczciwe użytkowanie, jednocześnie pozwalając Ci zażądać dokładnie potrzebnych danych.
Dlaczego ograniczanie szybkości na podstawie złożoności?
Tradycyjne interfejsy API REST używają ograniczania szybkości na podstawie liczby żądań, gdzie każde żądanie zużywa takie same kredyty, niezależnie od tego, czy pobierasz jedno pole czy setki, czy odczytujesz czy modyfikujesz dane — pomimo znacznej różnicy w obciążeniu serwera.
Podejście GraphQL oparte na złożoności zapytań rozwiązuje ten problem, obliczając koszty na podstawie faktycznie żądanych danych i wykonywanych operacji. To daje Ci większą elastyczność w żądaniu potrzebnych informacji, jednocześnie zapewniając przewidywalne obciążenie serwera.
Limit szybkości
Zonos używa systemu opartego na punktach, gdzie każde zapytanie odejmuje punkty na podstawie jego złożoności. Masz pulę dostępnych punktów, które:
To pozwala Ci na okazjonalne skoki liczby złożonych zapytań przy jednoczesnym utrzymaniu zrównoważonego tempa żądań.
Jak obliczany jest koszt zapytania
Każde żądanie GraphQL ma koszt obliczony przed wykonaniem:
Koszty podstawowe
Pola skalarne takie jak ciągi znaków, liczby całkowite, identyfikatory i wartości logiczne nie zwiększają kosztu. Płacisz tylko za operację podstawową i zwrócone obiekty.
Przykład: Proste zapytanie
query {landedCost(id: "123") {idcreatedByshipToCountry}}Podział kosztów: 5 (podstawowe zapytanie) + 1 (obiekt kosztu dostawy) = 6 punktów
Pola skalarne (
id,name,currency) są bezpłatne.Przykład: Zapytanie z wieloma obiektami
{orders(first: 10, filter: { status: COMPLETED }) {edges {cursornode {id}}}}Podział kosztów: 5 (podstawowe zapytanie) + 10 (10 zamówień × 1 punkt każde) = 15 punktów
Przykład: Mutacja
mutation {landedCostCalculate(input: { ... }) {id}}Podział kosztów: 10 (mutacja podstawowa) + około 50 (zwrócone obiekty) = 60 punktów
Typowe obliczenie kosztu dostawy kosztuje około 60 punktów w złożoności.
Wyświetlanie złożoności zapytania
Każda odpowiedź API zawiera nagłówek
zonos-query-complexitypokazujący koszt Twojego zapytania:zonos-query-complexity: 58Ten nagłówek mówi Ci dokładnie ile punktów zapytanie zużyło. Użyj go do monitorowania użytkowania API i optymalizacji kosztownych zapytań.
Obsługa limitów szybkości
Jeśli przekroczysz limit szybkości, otrzymasz komunikat o błędzie. Aby efektywnie obsługiwać limity szybkości:
Monitoruj swoją złożoność
Sprawdź nagłówek
zonos-query-complexityw odpowiedziach, aby zrozumieć koszty zapytań i zidentyfikować kosztowne wzorce.Wdróż logikę ponowienia
Jeśli osiągniesz limity szybkości, wdróż logikę exponential backoff i ponowienia. Ponieważ pula punktów uzupełnia się z szybkością 3 000 punktów na sekundę, oblicz odpowiednie czasy oczekiwania na podstawie złożoności zapytania.
Grupuj efektywnie
GraphQL pozwala Ci na żądanie wielu zapytań w jednym żądaniu:
{landedCost(id: "landed_cost_123") {idcreatedAt}order(orderId: "order_123") {idstatuscreatedAt}}Najlepsze praktyki
Żądaj tylko to, czego potrzebujesz
Złożoność zapytania jest proporcjonalna do danych, które żądasz. Strukturuj swoje zapytania, aby pobrać tylko pola i obiekty, które faktycznie będziesz używać.
query {order(orderId: "order_123") {idstatuscreatedAtupdatedAtitems {idnamequantityamount}shipments {id}}}Paginacja dużych zbiorów danych
Kiedy żądasz wielu obiektów, używaj rozsądnych rozmiarów stron:
{orders(first: 100, filter: { status: COMPLETED }) {edges {cursornode {id}}}}Żądaj 10-50 elementów na raz i przechodź przez wyniki w miarę potrzeby, zamiast żądać setek obiektów w jednym zapytaniu.
Unikaj niepotrzebnego zagnieżdżenia
Każdy zagnieżdżony obiekt zwiększa Twoją złożoność. Żądaj tylko zagnieżdżonych danych, gdy ich rzeczywiście potrzebujesz.
Czy ta strona była pomocna?