Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A GraphQL-ben a kért mezők pontosan meghatározzák, hogy a Data API Builder (DAB) mit ad vissza, nem több, nem kevesebb. A DAB ezeket a kijelöléseket paraméteres SQL-re állítja össze, beleértve csak a kért leképezett (közzétett) oszlopokat, valamint a belsőleg lekérendő további oszlopokat. Ezek közé tartozhatnak a kapcsolatokhoz (idegen kulcsokhoz), az elsődleges kulcsokhoz vagy a lapozáshoz és a kurzor felépítéséhez használt stabil rendezéshez szükséges oszlopok.
Megjegyzés:
A GraphQL-nek nincs ilyen helyettesítő karaktere SELECT *. Az ügyfeleknek explicit módon kell megadniuk az egyes mezőket.
Lépjen a dokumentum REST-verziójára.
Alapszintű kijelölés
Néhány leképezett mező lekérdezése.
GraphQL-lekérdezés
query {
books {
items {
id
title
price
}
}
}
Fogalmi SQL
SELECT
id,
sku_title AS title,
sku_price AS price
FROM dbo.books;
Mintaválasz
{
"data": {
"books": {
"items": [
{
"id": 1,
"title": "Dune",
"price": 20
}
]
}
}
}
Mezőaliasok
Az aliasok nem az adatbázisban, hanem a válaszban nevezik át a mezőket. Az SQL-réteg nem a GraphQL mezőneveinek aliasa; az aliasolás az adatlekérés után történik.
query {
books {
items {
id
bookTitle: title
cost: price
}
}
}
Fogalmi SQL
SELECT
id,
sku_title AS title,
sku_price AS price
FROM dbo.books;
Mintaválasz
Aliasokkal:
{
"data": {
"books": {
"items": [
{
"id": 2,
"bookTitle": "Foundation",
"cost": 18
}
]
}
}
}
Beágyazott kijelölés
A konfigurációban definiált kapcsolatok lehetővé teszik a beágyazott lekérdezéseket. Az alábbi fogalmi SQL-ben egyetlen illesztés látható. A gyakorlatban a DAB egy vagy több paraméteres lekérdezést (például egy szülőlekérdezés és egy kötegelt gyermeklekérés) hajthat végre egyetlen lapított illesztés helyett.
GraphQL-lekérdezés
query {
books {
items {
id
title
category {
id
name
}
}
}
}
Fogalmi SQL
SELECT
b.id,
b.sku_title AS title,
c.id AS category_id,
c.name AS category_name
FROM dbo.books AS b
JOIN dbo.categories AS c
ON b.category_id = c.id;
Mintaválasz
{
"data": {
"books": {
"items": [
{
"id": 1,
"title": "Dune",
"category": {
"id": 10,
"name": "Sci-Fi"
}
},
{
"id": 2,
"title": "Foundation",
"category": {
"id": 10,
"name": "Sci-Fi"
}
}
]
}
}
}
Egy-a-többhöz kijelölés
Az inverz kapcsolatot is át lehet haladni. Az SQL szintén fogalmi jellegű; a tényleges végrehajtás deduplikálhatja a szülősorokat, és külön-külön materializálhatja a gyermekgyűjteményeket.
GraphQL-lekérdezés
query {
categories {
items {
id
name
books {
items {
id
title
}
}
}
}
}
Fogalmi SQL
SELECT
c.id,
c.name,
b.id AS book_id,
b.sku_title AS title
FROM dbo.categories AS c
JOIN dbo.books AS b
ON c.id = b.category_id;
Mintaválasz
{
"data": {
"categories": {
"items": [
{
"id": 10,
"name": "Sci-Fi",
"books": {
"items": [
{ "id": 1, "title": "Dune" },
{ "id": 2, "title": "Foundation" }
]
}
}
]
}
}
}
Konfigurációs példa
{
"runtime": {
"pagination": {
"default-page-size": 100,
"max-page-size": 100000
}
},
"entities": {
"Book": {
"source": {
"type": "table",
"object": "dbo.books"
},
"mappings": {
"sku_title": "title",
"sku_price": "price"
},
"relationships": {
"book_category": {
"cardinality": "one",
"target.entity": "Category",
"source.fields": [ "category_id" ],
"target.fields": [ "id" ]
}
}
},
"Category": {
"source": {
"type": "table",
"object": "dbo.categories"
},
"relationships": {
"category_books": {
"cardinality": "many",
"target.entity": "Book",
"source.fields": [ "id" ],
"target.fields": [ "category_id" ]
}
}
}
}
}
Lásd még
| Concept | REST | GraphQL | Cél |
|---|---|---|---|
| Projection | $select | Elemek | Adja meg, hogy mely mezőket adja vissza |
| Filtering | $filter | szűrő | Sorok korlátozása feltétel szerint |
| Rendezés | $orderby | orderBy | Rendezési sorrend meghatározása |
| Oldalméret | $first | first | Az elemek számának korlátozása oldalanként |
| Folytatás | $after | után | Folytatás az utolsó oldalról kurzor használatával |
Megjegyzés:
A REST-kulcsszavak az OData-konvenciók követésével $kezdődnek.