Sdílet prostřednictvím


Volání koncových bodů GraphQL

Koncové body GraphQL v Tvůrci rozhraní DATA API (DAB) umožňují dotazovat a upravovat data s přesností. Každý dotaz deklaruje přesně ta pole, která potřebujete, a podporuje argumenty pro filtrování, řazení a stránkování výsledků.

Ve výchozím nastavení DAB hostuje koncový bod GraphQL na adrese:

https://{base_url}/graphql

Entity vystavené prostřednictvím konfigurace se automaticky zahrnou do schématu GraphQL. Například pokud máte entity books a authors, obě se ve schématu zobrazují jako kořenová pole.

Poznámka:

K prozkoumání schématu a automatické doplňování použijte libovolného moderního GraphQL klienta nebo integrovaného vývojového prostředí (IDE) (například Apollo, Insomnia nebo VS Code GraphQL).

Klíčová slova podporovaná v Tvůrci rozhraní Data API

Koncepce GraphQL Účel
Projection items Zvolte, která pole vrátit
Filtering filtr Omezení řádků podle podmínky
Řazení orderBy Definování pořadí řazení
Velikost stránky first Omezení položek na stránku
Pokračování po Pokračovat z poslední stránky

Základní struktura

Každý dotaz GraphQL začíná kořenovým polem, které představuje entitu.

{
  books {
    items {
      id
      title
      price
    }
  }
}

Výsledkem je objekt JSON se stejným tvarem jako sada výběrů:

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

Poznámka:

Ve výchozím nastavení daB vrátí až 100 položek na dotaz, pokud není nakonfigurovaný jinak (runtime.pagination.default-page-size).

Typy dotazů

Každá entita podporuje dva standardní kořenové dotazy:

Query Popis
entity_by_pk Vrátí jeden záznam podle primárního klíče.
entities Vrátí seznam záznamů, které odpovídají filtrům.

Příklad vrácení jednoho záznamu:

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

Příklad vracející mnoho dat:

{
  books {
    items {
      id
      title
    }
  }
}

Filtrování výsledků

Pomocí argumentu filter omezte, které záznamy se vrátí.

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

Tento dotaz vrátí všechny knihy, jejichž název obsahuje "Nadace".

Filtry můžou kombinovat porovnání s logickými operátory:

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

Podívejte se na referenční informace o argumentech filtru pro podporované operátory, jako jsou eq, neq, lt, lte, a isNull.

Řazení výsledků

Argument orderBy definuje způsob řazení záznamů.

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

Vrátí knihy seřazené podle year sestupně, pak podle title.

Další podrobnosti najdete v referenčních informacích k argumentu orderBy .

Omezení výsledků

Argument first omezuje počet vrácených záznamů v jednom požadavku.

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

Tím se vrátí prvních pět knih seřazených podle primárního klíče ve výchozím nastavení. Můžete také použít first: -1 k vyžádání nakonfigurované maximální velikosti stránky.

Další informace najdete v prvním odkazu na argument.

Pokračování výsledků

Pokud chcete načíst další stránku, použijte after argument s kurzorem z předchozího dotazu.

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

Token after označuje, kde byla předchozí stránka ukončena. Další podrobnosti najdete v referenčních informacích k argumentu.

Výběr pole (projekce)

V GraphQL zvolíte přesně ta pole, která se zobrazí v odpovědi. Neexistuje žádný zástupný znak jako SELECT *. Požádejte jenom o to, co potřebujete.

{
  books {
    items { id title price }
  }
}

K přejmenování polí v odpovědi můžete také použít aliasy:

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

Podrobnosti najdete v referenčních informacích k projekci polí .