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
Každá entita má podporu pro následující akce:
- stránkování
- dotaz podle primárního klíče
- obecného dotazu
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 sfirst
aafter
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
aafter
: 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 true
a 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í | |
PostgreSQL | Přečteno potvrzeno | PostgreSQL |
Související obsah
- Referenční informace o konfiguraci GraphQL
- OpenAPI