Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
GraphQL'de, istediğiniz alanlar Tam olarak Veri API'sinin oluşturucusunun (DAB) döndürdüğü verileri tanımlar. DAB, yalnızca istediğiniz eşlenmiş (kullanıma sunulan) sütunlar ve dahili olarak getirmesi gereken ek sütunlar da dahil olmak üzere bu seçimleri parametreli SQL'de derler. Bunlar, ilişkiler (yabancı anahtarlar), birincil anahtarlar veya sayfalandırma ve imleç oluşturmada kullanılan kararlı sıralama için gerekli sütunları içerebilir.
Uyarı
GraphQL'de gibi SELECT *joker karakter yoktur. İstemciler her alanı açıkça belirtmelidir.
Bu belgenin REST sürümüne gidin.
Temel seçim
Birkaç eşlenmiş alanı sorgulama.
GraphQL sorgusu
query {
books {
items {
id
title
price
}
}
}
Kavramsal SQL
SELECT
id,
sku_title AS title,
sku_price AS price
FROM dbo.books;
Örnek yanıt
{
"data": {
"books": {
"items": [
{
"id": 1,
"title": "Dune",
"price": 20
}
]
}
}
}
Alan diğer adları
Diğer adlar, veritabanında değil yanıttaki alanları yeniden adlandırır. SQL katmanı GraphQL alan adlarının diğer adı değildir; diğer ad, veri alımının ardından gerçekleşir.
query {
books {
items {
id
bookTitle: title
cost: price
}
}
}
Kavramsal SQL
SELECT
id,
sku_title AS title,
sku_price AS price
FROM dbo.books;
Örnek yanıt
Diğer adlarla:
{
"data": {
"books": {
"items": [
{
"id": 2,
"bookTitle": "Foundation",
"cost": 18
}
]
}
}
}
İç içe seçim
Yapılandırmada tanımlanan ilişkiler iç içe sorgulara izin verir. Aşağıdaki kavramsal SQL tek bir birleştirmeyi gösterir. Uygulamada DAB, tek bir düzleştirilmiş birleştirme yerine bir veya daha fazla parametreli sorgu (örneğin, bir üst sorgu artı toplu alt getirme) yürütebilir.
GraphQL sorgusu
query {
books {
items {
id
title
category {
id
name
}
}
}
}
Kavramsal 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;
Örnek yanıt
{
"data": {
"books": {
"items": [
{
"id": 1,
"title": "Dune",
"category": {
"id": 10,
"name": "Sci-Fi"
}
},
{
"id": 2,
"title": "Foundation",
"category": {
"id": 10,
"name": "Sci-Fi"
}
}
]
}
}
}
Bire çok seçimi
Ters ilişkiyi de geçirebilirsiniz. Sql de kavramsaldır; gerçek yürütme üst satırları yinelenenleri kaldırabilir ve alt koleksiyonları ayrı ayrı gerçekleştirebilir.
GraphQL sorgusu
query {
categories {
items {
id
name
books {
items {
id
title
}
}
}
}
}
Kavramsal 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;
Örnek yanıt
{
"data": {
"categories": {
"items": [
{
"id": 10,
"name": "Sci-Fi",
"books": {
"items": [
{ "id": 1, "title": "Dune" },
{ "id": 2, "title": "Foundation" }
]
}
}
]
}
}
}
Örnek yapılandırma
{
"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" ]
}
}
}
}
}
Ayrıca bakınız
| Konsept | REST | GraphQL | Amaç |
|---|---|---|---|
| Projection | $select | items | Döndürülecek alanları seçme |
| Filtering | $filter | filtre | Satırları koşula göre kısıtlama |
| Sıralama | $orderby | orderBy | Sıralama düzenini tanımlama |
| Sayfa Boyutu | $first | first | Sayfa başına öğe sayısını sınırlama |
| Devam | $after | sonra | İmleç kullanarak son sayfadan devam et |
Uyarı
REST anahtar sözcükleri, OData kurallarını izleyerek ile $başlar.