Sdílet prostřednictvím


Hostování koncových bodů GraphQL v Tvůrci rozhraní Data API

Entity nakonfigurované tak, aby byly dostupné prostřednictvím GraphQL, jsou k dispozici ve výchozí cestě: https://{base_url}//graphql. Tvůrce rozhraní Data API automaticky vygeneruje schéma GraphQL s poli dotazu a změkování pro všechny nakonfigurované entity. Schéma GraphQL je možné prozkoumat pomocí moderního klienta GraphQL, který obsahuje funkce, jako je automatické dokončování.

Pokud jste postupovali podle začínáme příkladu, kde jsou books a entita authors nakonfigurovaná pro přístup k GraphQL, můžete zjistit, jak snadné je používat GraphQL.

Formát sady výsledků

Vrácený výsledek je objekt JSON s tímto formátem:

{
    "data": {}    
}

Poznámka

Ve výchozím nastavení se vrátí pouze prvních 100 položek.

Podporované kořenové typy

Tvůrce rozhraní Data API podporuje následující kořenové typy GraphQL:

dotazy

Dotazy

Každá entita má podporu pro následující akce:

Tvůrce rozhraní DATA API, pokud není uvedeno jinak, používá singulární název entity vždy, když se očekává, že dotaz vrátí jednu položku. Tvůrce rozhraní Data API naopak používá v množném čísle názvu entity vždy, když se očekává, že dotaz vrátí seznam položek. Například entita book obsahuje:

  • book_by_pk(): vrácení nulové nebo jedné entity
  • books(): vrácení seznamu nulových nebo více entit

Stránkování

Všechny typy dotazů vracející nula nebo více položek podporují stránkování:

{
  books
  {
    items {
      title
    }
    hasNextPage
    endCursor
  }
}
  • objekt item umožňuje přístup k polím entity.
  • hasNextPage je nastavená na hodnotu True, pokud se má vrátit více položek.
  • endCursor vrátí neprůzný řetězec kurzoru, který lze použít s first a after parametry dotazu k získání další sady (nebo stránky) položek.

Dotazování podle primárního klíče

Každá entita podporuje načítání konkrétní položky prostřednictvím primárního klíče pomocí následujícího formátu dotazu:

<entity>_by_pk(<pk_colum>:<pk_value>)
{
    <fields>
}

Například:

{
  book_by_pk(id:1010) {
    title
  }
}

Obecný dotaz

Každá entita podporuje také obecný vzor dotazu, abyste mohli požádat pouze o požadované položky v požadovaném pořadí pomocí následujících parametrů:

  • filter: filtruje vrácené položky.
  • orderBy: definuje způsob řazení vrácených dat.
  • first a after: vrátí pouze položky nejvyšší n.

Například:

{
  authors(
    filter: {
        or: [
          { first_name: { eq: "Isaac" } }
          { last_name: { eq: "Asimov" } }
        ]
    }
  ) {
    items {
      first_name
      last_name
      books(orderBy: { year: ASC }) {
        items {
          title
          year
        }
      }
    }
  }
}

filter

Hodnota parametru filter je predikát výraz (výraz, který vrací logickou hodnotu) pomocí polí entity. Do odpovědi se zahrnou pouze položky, ve kterých se výraz vyhodnotí jako Pravda. Například:

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

Tento dotaz vrátí všechny knihy se slovem Foundation v názvu.

Operátory podporované parametrem filter jsou:

Operátor Typ Popis Příklad
eq Porovnání Rovný books(filter: { title: { eq: "Foundation" } })
neq Porovnání Nerovná se books(filter: { title: { neq: "Foundation" } })
gt Porovnání Větší než books(filter: { year: { gt: 1990 } })
gte Porovnání Větší než nebo rovno books(filter: { year: { gte: 1990 } })
lt Porovnání Méně než books(filter: { year: { lt: 1990 } })
lte Porovnání Menší než nebo rovno books(filter: { year: { lte: 1990 } })
isNull Porovnání Je null books(filter: { year: { isNull: true} })
contains Řetězec Obsahuje books(filter: { title: { contains: "Foundation" } })
notContains Řetězec Neobsahuje books(filter: { title: { notContains: "Foundation" } })
startsWith Řetězec Začíná na books(filter: { title: { startsWith: "Foundation" } })
endsWith Řetězec Konec s books(filter: { title: { endsWith: "Empire" } })
and Logický Logické a authors(filter: { and: [ { first_name: { eq: "Robert" } } { last_name: { eq: "Heinlein" } } ] })
or Logický Logická nebo authors(filter: { or: [ { first_name: { eq: "Isaac" } } { first_name: { eq: "Dan" } } ] })

orderBy

Hodnota orderby nastavte pořadí, se kterým se vrátí položky v sadě výsledků. Například:

{
  books(orderBy: {title: ASC} )
  {
    items {
      id
      title
    }
  }
}

Tento dotaz vrátí knihy seřazené podle title.

first a after

Parametr first omezuje počet vrácených položek. Například:

query {
  books(first: 5)
  {
    items {
      id
      title
    }
    hasNextPage
    endCursor
  }
}

Tento dotaz vrátí prvních pět knih. Pokud není zadán žádný orderBy, položky jsou seřazeny na základě základního primárního klíče. Hodnota zadaná pro orderBy musí být kladné celé číslo.

Pokud je v entitě book více položek, než jsou tyto entity požadované prostřednictvím first, vyhodnotí se pole hasNextPage jako truea endCursor vrátí řetězec, který lze použít s parametrem after pro přístup k dalším položkám. Například:

query {
  books(first: 5, after: "W3siVmFsdWUiOjEwMDQsIkRpcmVjdGlvbiI6MCwiVGFibGVTY2hlbWEiOiIiLCJUYWJsZU5hbWUiOiIiLCJDb2x1bW5OYW1lIjoiaWQifV0=")
  {
    items {
      id
      title
    }
    hasNextPage
    endCursor
  }
}

Mutace

Pro každou entitu se automaticky vytvoří mutační operace, které podporují operace vytvoření, aktualizace a odstranění. Operace s mutací se vytvoří pomocí následujícího vzoru názvů: <operation><entity>. Například pro entitu book by se mumitovaly:

  • createbook: vytvoření nové knihy
  • updatebook: Aktualizace existující knihy
  • deletebook: odstraňte zadanou knihu.

Vytvářet

K vytvoření nového prvku požadované entity je k dispozici create<entity> mutaci. Vytvořená mutace vyžaduje parametr item, kde jsou zadány hodnoty povinných polí entity při vytváření nové položky.

create<entity>(item: <entity_fields>)
{
    <fields>
}

Například:

mutation {
  createbook(item: {
    id: 2000,
    title: "Leviathan Wakes"    
  }) {
    id
    title
  }  
}

Aktualizace

Chcete-li aktualizovat prvek požadované entity, je k dispozici update<entity> mutace. Aktualizační mutaci vyžaduje dva parametry:

  • <primary_key>, seznam klíč-hodnota sloupců primárního klíče a souvisejících hodnot k identifikaci prvku, který se má aktualizovat
  • item: parametr s povinnými hodnotami polí entity, které se mají použít při aktualizaci zadané položky
update<entity>(<pk_colum>:<pk_value>, [<pk_colum>:<pk_value> ... <pk_colum>:<pk_value>,] item: <entity_fields>)
{
    <fields>
}

Například:

mutation {
  updatebook(id: 2000, item: {
    year: 2011,
    pages: 577    
  }) {
    id
    title
    year
    pages
  }
}

Vymazat

K odstranění prvku požadované entity je k dispozici delete<entity> mutaci. Primárním klíčem elementu, který se má odstranit, je povinný parametr.

delete<entity>(<pk_colum>:<pk_value>, [<pk_colum>:<pk_value> ... <pk_colum>:<pk_value>,])
{
    <fields>
}

Například:

mutation {
  deletebook(id: 1234)
  {
    id
    title
  }  
}

Databázové transakce pro mutaci

Aby bylo potřeba zpracovat typický požadavek na mutaci GraphQL, tvůrce rozhraní Data API vytvoří dva databázové dotazy. Jeden z databázových dotazů provede akci aktualizace (nebo) vložení (nebo) odstranění, která je přidružená k mutaci. Druhý databázový dotaz načte data požadovaná v sadě výběru.

Tvůrce rozhraní Data API provádí v transakci oba databázové dotazy. Transakce se vytvářejí pouze pro typy databází SQL.

Následující tabulka uvádí úrovně izolace, se kterými se transakce vytvářejí pro každý typ databáze.

Typ databáze Úroveň izolace Další informace
Azure SQL (nebo) SQL Server Přečteno potvrzeno Azure SQL
MySQL Opakovatelné čtení MySQL
PostgreSQL Přečteno potvrzeno PostgreSQL
  • Referenční informace o konfiguraci GraphQL
  • OpenAPI