Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In GraphQL definiëren de velden die u aanvraagt precies wat Data API Builder (DAB) retourneert, niet meer, niet minder. DAB compileert deze selecties in geparameteriseerde SQL, inclusief alleen de toegewezen (weergegeven) kolommen die u hebt gevraagd en eventuele extra kolommen die intern moeten worden opgehaald. Dit kunnen kolommen bevatten die vereist zijn voor relaties (refererende sleutels), primaire sleutels of stabiele volgorde die wordt gebruikt in paginering en cursorconstructie.
Opmerking
GraphQL heeft geen jokerteken zoals SELECT *. Clients moeten elk veld expliciet opgeven.
Ga naar de REST-versie van dit document.
Basisselectie
Query's uitvoeren op een aantal toegewezen velden.
GraphQL-query
query {
books {
items {
id
title
price
}
}
}
Conceptuele SQL
SELECT
id,
sku_title AS title,
sku_price AS price
FROM dbo.books;
Voorbeeldantwoord
{
"data": {
"books": {
"items": [
{
"id": 1,
"title": "Dune",
"price": 20
}
]
}
}
}
Veldaliassen
Aliassen wijzigen de naam van velden in het antwoord, niet in de database. De SQL-laag aliast niet naar GraphQL-veldnamen; aliasing vindt plaats na het ophalen van gegevens.
query {
books {
items {
id
bookTitle: title
cost: price
}
}
}
Conceptuele SQL
SELECT
id,
sku_title AS title,
sku_price AS price
FROM dbo.books;
Voorbeeldantwoord
Met aliassen:
{
"data": {
"books": {
"items": [
{
"id": 2,
"bookTitle": "Foundation",
"cost": 18
}
]
}
}
}
Geneste selectie
Relaties die in de configuratie zijn gedefinieerd, staan geneste query's toe. In de conceptuele SQL hieronder ziet u één join. In de praktijk kan DAB een of meer geparameteriseerde query's uitvoeren (bijvoorbeeld een bovenliggende query plus een batchgewijs onderliggend ophalen) in plaats van één platgemaakte join.
GraphQL-query
query {
books {
items {
id
title
category {
id
name
}
}
}
}
Conceptuele 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;
Voorbeeldantwoord
{
"data": {
"books": {
"items": [
{
"id": 1,
"title": "Dune",
"category": {
"id": 10,
"name": "Sci-Fi"
}
},
{
"id": 2,
"title": "Foundation",
"category": {
"id": 10,
"name": "Sci-Fi"
}
}
]
}
}
}
Een-op-veel-selectie
U kunt ook de inverse relatie doorlopen. Sql is opnieuw conceptueel. de werkelijke uitvoering kan bovenliggende rijen ontdubbelen en onderliggende verzamelingen afzonderlijk materialiseren.
GraphQL-query
query {
categories {
items {
id
name
books {
items {
id
title
}
}
}
}
}
Conceptuele 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;
Voorbeeldantwoord
{
"data": {
"categories": {
"items": [
{
"id": 10,
"name": "Sci-Fi",
"books": {
"items": [
{ "id": 1, "title": "Dune" },
{ "id": 2, "title": "Foundation" }
]
}
}
]
}
}
}
Voorbeeldconfiguratie
{
"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" ]
}
}
}
}
}
Zie ook
| Concept | REST | GraphQL | Purpose |
|---|---|---|---|
| Projection | $select | Items | Kiezen welke velden u wilt retourneren |
| Filtering | $filter | filteren | Rijen beperken op voorwaarde |
| Sorteervolgorde | $orderby | orderBy | De sorteervolgorde definiëren |
| Paginaformaat | $first | first | Het aantal items per pagina beperken |
| Voortzetting | $after | na | Doorgaan vanaf de laatste pagina met behulp van een cursor |
Opmerking
REST-trefwoorden beginnen met $het volgen van OData-conventies.