Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W narzędziu GraphQL żądane pola definiują dokładnie to, co konstruktor interfejsu API danych (DAB) zwraca, a nie mniej. Język DAB kompiluje te wybory w sparametryzowanym języku SQL, w tym tylko zamapowane (uwidocznione) kolumny, których zażądano, i wszelkie dodatkowe kolumny, które muszą pobrać wewnętrznie. Mogą to być kolumny wymagane w przypadku relacji (kluczy obcych), kluczy podstawowych lub stabilnego porządkowania używanego w konstrukcji stronicowania i kursora.
Uwaga / Notatka
Narzędzie GraphQL nie ma symbolu wieloznakowego, takiego jak SELECT *. Klienci muszą jawnie określić każde pole.
Przejdź do wersji REST tego dokumentu.
Wybór podstawowy
Wykonywanie zapytań dotyczących kilku zamapowanych pól.
Zapytanie GraphQL
query {
books {
items {
id
title
price
}
}
}
Koncepcyjny język SQL
SELECT
id,
sku_title AS title,
sku_price AS price
FROM dbo.books;
Przykładowa odpowiedź
{
"data": {
"books": {
"items": [
{
"id": 1,
"title": "Dune",
"price": 20
}
]
}
}
}
Aliasy pól
Aliasy zmieniają nazwy pól w odpowiedzi, a nie w bazie danych. Warstwa SQL nie aliasuje nazw pól GraphQL; aliasowanie odbywa się po pobraniu danych.
query {
books {
items {
id
bookTitle: title
cost: price
}
}
}
Koncepcyjny język SQL
SELECT
id,
sku_title AS title,
sku_price AS price
FROM dbo.books;
Przykładowa odpowiedź
Z aliasami:
{
"data": {
"books": {
"items": [
{
"id": 2,
"bookTitle": "Foundation",
"cost": 18
}
]
}
}
}
Zagnieżdżone zaznaczenie
Relacje zdefiniowane w konfiguracji umożliwiają zagnieżdżone zapytania. Poniższy koncepcyjny kod SQL przedstawia pojedyncze sprzężenia. W praktyce daB może wykonywać jedno lub więcej sparametryzowanych zapytań (na przykład zapytanie nadrzędne i pobieranie podrzędne wsadowe) zamiast pojedynczego spłaszczonego sprzężenia.
Zapytanie GraphQL
query {
books {
items {
id
title
category {
id
name
}
}
}
}
Koncepcyjny język 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;
Przykładowa odpowiedź
{
"data": {
"books": {
"items": [
{
"id": 1,
"title": "Dune",
"category": {
"id": 10,
"name": "Sci-Fi"
}
},
{
"id": 2,
"title": "Foundation",
"category": {
"id": 10,
"name": "Sci-Fi"
}
}
]
}
}
}
Wybór jeden do wielu
Możesz również przejść przez odwrotną relację. Ponownie język SQL jest koncepcyjny; rzeczywiste wykonanie może deduplikować wiersze nadrzędne i zmaterializować kolekcje podrzędne oddzielnie.
Zapytanie GraphQL
query {
categories {
items {
id
name
books {
items {
id
title
}
}
}
}
}
Koncepcyjny język 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;
Przykładowa odpowiedź
{
"data": {
"categories": {
"items": [
{
"id": 10,
"name": "Sci-Fi",
"books": {
"items": [
{ "id": 1, "title": "Dune" },
{ "id": 2, "title": "Foundation" }
]
}
}
]
}
}
}
Przykładowa konfiguracja
{
"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" ]
}
}
}
}
}
Zobacz także
| Concept | REST | GraphQL | Przeznaczenie |
|---|---|---|---|
| Projection | $select | Elementy | Wybieranie pól, które mają być zwracane |
| Filtering | $filter | filtr | Ograniczanie wierszy według warunku |
| Sortowanie | $orderby | orderBy | Definiowanie kolejności sortowania |
| Rozmiar strony | $first | first | Ogranicz liczbę elementów na stronę |
| Kontynuacja | $after | po | Kontynuuj z ostatniej strony przy użyciu kursora |
Uwaga / Notatka
Słowa kluczowe REST zaczynają się od , zgodnie z $konwencjami OData.