GraphQL-végpontok gazdagépe a Data API Builderben
A GraphQL-en keresztül elérhető entitások az alapértelmezett elérési úton érhetők el: https://{base_url}//graphql
. A Data API Builder automatikusan létrehoz egy GraphQL-sémát az összes konfigurált entitás lekérdezési és mutációs mezőivel. A GraphQL-séma egy modern GraphQL-ügyféllel vizsgálható meg, amely olyan funkciókat tartalmaz, mint az automatikus kiegészítés.
Ha követte a Első lépések példát, ahol a GraphQL-hozzáféréshez konfigurált books
és authors
entitás van konfigurálva, láthatja, milyen egyszerű a GraphQL használata.
Eredményhalmaz formátuma
A visszaadott eredmény egy ilyen formátumú JSON-objektum:
{
"data": {}
}
Jegyzet
Alapértelmezés szerint csak az első 100 elem lesz visszaadva.
Támogatott gyökértípusok
A Data API Builder a következő GraphQL-gyökértípusokat támogatja:
Lekérdezések
Minden entitás támogatja a következő műveleteket:
- lapozási
- lekérdezés elsődleges kulcs
- általános lekérdezési
A Data API Builder , hacsak másként nem adja meg, az entitás egyedi nevét használja, amikor a lekérdezés várhatóan egyetlen elemet ad vissza. Ezzel szemben a Data API builder egy entitás többes számú nevét használja, amikor a lekérdezés várhatóan egy elemlistát ad vissza. Az book
entitás például a következő:
-
book_by_pk()
: nulla vagy egy entitás visszaadásához -
books()
: nulla vagy több entitás listájának visszaadása
Tördelés
Minden olyan lekérdezéstípus, amely nullát vagy több elemet ad vissza, támogatja a lapozást:
{
books
{
items {
title
}
hasNextPage
endCursor
}
}
- az
item
objektum lehetővé teszi az entitásmezők elérését -
hasNextPage
igaz értékre van állítva, ha több elemet kell visszaadni -
endCursor
egy átlátszatlan kurzorsztringet ad vissza, amelyfirst
ésafter
lekérdezési paraméterekkel használható az elemek következő készletének (vagy oldalának) lekéréséhez.
Lekérdezés elsődleges kulcs szerint
Minden entitás támogatja egy adott elem lekérését az elsődleges kulcsán keresztül, a következő lekérdezési formátum használatával:
<entity>_by_pk(<pk_colum>:<pk_value>)
{
<fields>
}
Például:
{
book_by_pk(id:1010) {
title
}
}
Általános lekérdezés
Minden entitás egy általános lekérdezési mintát is támogat, így csak a kívánt elemeket kérheti le a kívánt sorrendben a következő paraméterekkel:
-
filter
: szűri a visszaadott elemeket -
orderBy
: meghatározza a visszaadott adatok rendezésének módját -
first
ésafter
: csak a felsőn
elemeket adja vissza
Például:
{
authors(
filter: {
or: [
{ first_name: { eq: "Isaac" } }
{ last_name: { eq: "Asimov" } }
]
}
) {
items {
first_name
last_name
books(orderBy: { year: ASC }) {
items {
title
year
}
}
}
}
}
filter
A filter
paraméter értéke predikátumkifejezés (logikai értéket visszaadó kifejezés) az entitás mezőivel. A válasz csak azokat az elemeket tartalmazza, amelyekben a kifejezés "True" értéket ad vissza. Például:
{
books(filter: { title: { contains: "Foundation" } })
{
items {
id
title
authors {
items {
first_name
last_name
}
}
}
}
}
Ez a lekérdezés az összes olyan könyvet visszaadja, amelyben a címben Foundation
szó szerepel.
A filter
paraméter által támogatott operátorok a következők:
Operátor | Típus | Leírás | Példa |
---|---|---|---|
eq |
Összehasonlítás | Egyenlő | books(filter: { title: { eq: "Foundation" } }) |
neq |
Összehasonlítás | Nem egyenlő | books(filter: { title: { neq: "Foundation" } }) |
gt |
Összehasonlítás | Nagyobb, mint | books(filter: { year: { gt: 1990 } }) |
gte |
Összehasonlítás | Nagyobb vagy egyenlő | books(filter: { year: { gte: 1990 } }) |
lt |
Összehasonlítás | Kisebb, mint | books(filter: { year: { lt: 1990 } }) |
lte |
Összehasonlítás | Kisebb vagy egyenlő | books(filter: { year: { lte: 1990 } }) |
isNull |
Összehasonlítás | Null értékű | books(filter: { year: { isNull: true} }) |
contains |
Húr | Tartalmaz | books(filter: { title: { contains: "Foundation" } }) |
notContains |
Húr | Nem tartalmaz | books(filter: { title: { notContains: "Foundation" } }) |
startsWith |
Húr | A következővel kezdődik: | books(filter: { title: { startsWith: "Foundation" } }) |
endsWith |
Húr | Befejezés: | books(filter: { title: { endsWith: "Empire" } }) |
and |
Logikus | Logikai és | authors(filter: { and: [ { first_name: { eq: "Robert" } } { last_name: { eq: "Heinlein" } } ] }) |
or |
Logikus | Logikai vagy | authors(filter: { or: [ { first_name: { eq: "Isaac" } } { first_name: { eq: "Dan" } } ] }) |
orderBy
A orderby
értéke adja meg az eredményhalmaz elemeinek visszaadásának sorrendjét. Például:
{
books(orderBy: {title: ASC} )
{
items {
id
title
}
}
}
Ez a lekérdezés a title
által rendezett könyveket adja vissza.
first
és after
A first
paraméter korlátozza a visszaadott elemek számát. Például:
query {
books(first: 5)
{
items {
id
title
}
hasNextPage
endCursor
}
}
Ez a lekérdezés az első öt könyvet adja vissza. Ha nincs megadva orderBy
, a rendszer a mögöttes elsődleges kulcs alapján rendezi az elemeket. A orderBy
megadott értéknek pozitív egész számnak kell lennie.
Ha a book
entitásban több elem található, mint a first
keresztül kért entitások, a hasNextPage
mező kiértékelése true
lesz, a endCursor
pedig egy sztringet ad vissza, amely a after
paraméterrel használható a következő elemek eléréséhez. Például:
query {
books(first: 5, after: "W3siVmFsdWUiOjEwMDQsIkRpcmVjdGlvbiI6MCwiVGFibGVTY2hlbWEiOiIiLCJUYWJsZU5hbWUiOiIiLCJDb2x1bW5OYW1lIjoiaWQifV0=")
{
items {
id
title
}
hasNextPage
endCursor
}
}
Mutációk
Minden entitás esetében a létrehozási, frissítési és törlési műveleteket támogató mutációk automatikusan létrejönnek. A mutációs művelet a következő névmintával jön létre: <operation><entity>
. A book
entitás esetében például a mutációk a következőek:
-
createbook
: új könyv létrehozása -
updatebook
: meglévő könyv frissítése -
deletebook
: a megadott könyv törlése
Alkot
A kívánt entitás új elemének létrehozásához meg kell adni a create<entity>
mutációt. A létrehozott mutációhoz meg kell adni az item
paramétert, amelyben meg kell adni az entitás kötelező mezőinek értékeit az új elem létrehozásakor.
create<entity>(item: <entity_fields>)
{
<fields>
}
Például:
mutation {
createbook(item: {
id: 2000,
title: "Leviathan Wakes"
}) {
id
title
}
}
Frissít
A kívánt entitás egy elemének frissítéséhez meg kell adni a update<entity>
mutációt. A frissítésmutációhoz két paraméter szükséges:
-
<primary_key>
az elsődleges kulcsoszlopok és a kapcsolódó értékek kulcs-érték listája a frissítendő elem azonosításához -
item
: az entitás kötelező mezőértékeivel rendelkező paraméter, amelyet a megadott elem frissítésekor kell használni
update<entity>(<pk_colum>:<pk_value>, [<pk_colum>:<pk_value> ... <pk_colum>:<pk_value>,] item: <entity_fields>)
{
<fields>
}
Például:
mutation {
updatebook(id: 2000, item: {
year: 2011,
pages: 577
}) {
id
title
year
pages
}
}
Töröl
A kívánt entitás egy elemének törléséhez meg kell adni a delete<entity>
mutációt. A törölni kívánt elem elsődleges kulcsa a szükséges paraméter.
delete<entity>(<pk_colum>:<pk_value>, [<pk_colum>:<pk_value> ... <pk_colum>:<pk_value>,])
{
<fields>
}
Például:
mutation {
deletebook(id: 1234)
{
id
title
}
}
Adatbázistranzakciók mutációhoz
Egy tipikus GraphQL-mutációs kérelem feldolgozásához a Data API Builder két adatbázis-lekérdezést hoz létre. Az adatbázis-lekérdezések egyike végrehajtja a mutációhoz társított frissítési (vagy) beszúrási (vagy) törlési műveletet. A másik adatbázis-lekérdezés lekéri a kijelölési csoportban kért adatokat.
A Data API Builder mindkét adatbázis-lekérdezést végrehajtja egy tranzakcióban. A tranzakciók csak SQL-adatbázistípusokhoz jönnek létre.
Az alábbi táblázat felsorolja azokat az elkülönítési szinteket, amelyekkel az egyes adatbázistípusokhoz létrejönnek a tranzakciók.
Adatbázis típusa | Elkülönítési szint | További információ |
---|---|---|
Azure SQL (vagy) SQL Server | Lekötött olvasás | Azure SQL- |
MySQL | Ismételhető olvasás | MySQL- |
PostgreSQL | Lekötött olvasás | PostgreSQL |