Udostępnij za pomocą


Jak wywołać interfejsy API GraphQL

Punkty końcowe GraphQL w narzędziu Data API Builder (DAB) umożliwiają wykonywanie zapytań i modyfikowanie danych z dokładnością. Każde zapytanie deklaruje dokładnie potrzebne pola i obsługuje argumenty filtrowania, porządkowania i stronicowania wyników.

Domyślnie DAB hostuje swój punkt końcowy GraphQL w:

https://{base_url}/graphql

Jednostki uwidocznione za pośrednictwem konfiguracji są automatycznie uwzględniane w schemacie GraphQL. Na przykład, jeśli masz jednostki books i authors, obie występują jako pola root w schemacie.

Uwaga / Notatka

Użyj dowolnego nowoczesnego klienta GraphQL lub środowiska IDE (na przykład Apollo, Insomnia lub VS Code GraphQL), aby eksplorować schemat i korzystać z funkcji autouzupełniania.

Słowa kluczowe obsługiwane w narzędziu Data API Builder

Concept GraphQL Przeznaczenie
Projection Elementy Wybieranie pól, które mają być zwracane
Filtering filtr Ograniczanie wierszy na podstawie warunku
Sortowanie orderBy Definiowanie kolejności sortowania
Rozmiar strony first Ogranicz elementy na stronę
Kontynuacja po Kontynuuj z ostatniej strony

Struktura podstawowa

Każde zapytanie GraphQL rozpoczyna się od pola głównego reprezentującego jednostkę.

{
  books {
    items {
      id
      title
      price
    }
  }
}

Wynik jest obiektem JSON o tym samym kształcie co zestaw wyboru.

{
  "data": {
    "books": {
      "items": [
        { "id": 1, "title": "Dune", "price": 20 },
        { "id": 2, "title": "Foundation", "price": 18 }
      ]
    }
  }
}

Uwaga / Notatka

Domyślnie daB zwraca maksymalnie 100 elementów na zapytanie, chyba że skonfigurowano inaczej (runtime.pagination.default-page-size).

Typy zapytań

Każda jednostka obsługuje dwa standardowe zapytania główne:

Query Opis
entity_by_pk Zwraca jeden rekord według klucza podstawowego
entities Zwraca listę rekordów pasujących do filtrów

Przykład zwracający jeden rekord:

{
  book_by_pk(id: 1010) {
    title
    year
  }
}

Przykład zwraca wiele wyników:

{
  books {
    items {
      id
      title
    }
  }
}

Filtrowanie wyników

Użyj argumentu , filter aby ograniczyć zwracane rekordy.

{
  books(filter: { title: { contains: "Foundation" } }) {
    items { id title }
  }
}

To zapytanie zwraca wszystkie książki, których tytuł zawiera "Foundation".

Filtry mogą łączyć porównania z operatorami logicznymi:

{
  authors(filter: {
    or: [
      { first_name: { eq: "Isaac" } }
      { last_name: { eq: "Asimov" } }
    ]
  }) {
    items { first_name last_name }
  }
}

Zobacz referencję argumentów filtru dla obsługiwanych operatorów, takich jak eq, neq, lt, lte i isNull.

Sortowanie wyników

Argument orderBy definiuje sposób sortowania rekordów.

{
  books(orderBy: { year: DESC, title: ASC }) {
    items { id title year }
  }
}

Zwraca ono książki uporządkowane malejąco według year, a następnie według title.

Zobacz odwołanie do argumentu orderBy, aby uzyskać więcej informacji.

Ograniczanie wyników

Argument first ogranicza liczbę rekordów zwracanych w jednym żądaniu.

{
  books(first: 5) {
    items { id title }
  }
}

Zwraca domyślnie pięć pierwszych książek uporządkowanych według klucza podstawowego. Możesz również użyć first: -1 polecenia , aby zażądać skonfigurowanego maksymalnego rozmiaru strony.

Dowiedz się więcej w pierwszym odwołaniu do argumentów.

Dalsze wyniki

Aby pobrać następną stronę, użyj argumentu after z kursorem z poprzedniego zapytania.

{
  books(first: 5, after: "eyJpZCI6NX0=") {
    items { id title }
  }
}

Token after oznacza miejsce zakończenia poprzedniej strony. Aby uzyskać więcej informacji, zobacz sekcję poświęconą argumentom.

Wybór pola (projekcja)

W narzędziu GraphQL wybierasz dokładnie, które pola są wyświetlane w odpowiedzi. Nie ma symbolu wieloznacznego takiego jak SELECT *. Zażądaj tylko tego, czego potrzebujesz.

{
  books {
    items { id title price }
  }
}

Możesz również użyć aliasów, aby zmienić nazwy pól w odpowiedzi:

{
  books {
    items {
      bookTitle: title
      cost: price
    }
  }
}

Aby uzyskać szczegółowe informacje, zobacz dokumentację projekcji pól .