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 ile
Sayfalandırma, büyük veri kümelerini daha küçük, yönetilebilir sayfalara daraltıyor. GraphQL'de Veri API'si oluşturucusu (DAB), anahtar kümesi sayfalaması için bağımsız değişkenini kullanarak after sıralı sonuçlar arasında kararlı ve verimli bir geçiş sağlar. Her imleç, önceki sayfadaki son kaydın konumunu kodlar ve sonraki sorgunun bu noktadan devam etmesi için izin verir. Uzaklık sayfalandırmasından farklı olarak, anahtar kümesi sayfalandırması istekler arasında veri değiştiğinde boşluklardan veya yinelemelerden kaçınıyor.
Bu belgenin REST sürümüne gidin.
Hızlı bakış
| Konsept | Description |
|---|---|
after |
Önceki istekten devam belirteci |
first |
Sayfa başına getirilecek en fazla kayıt sayısı |
hasNextPage |
Daha fazla veri olup olmadığını gösterir |
endCursor |
Sonraki after isteğe eklenecek belirteç |
Temel sayfalandırma
GraphQL sorgusu
Bu örnekte ilk üç kitabı alıyoruz.
query {
books(first: 3) {
items {
id
title
}
hasNextPage
endCursor
}
}
Kavramsal SQL
SELECT TOP (3)
id,
sku_title AS title
FROM dbo.books
ORDER BY id ASC;
Örnek yanıt
{
"data": {
"books": {
"items": [
{ "id": 1, "title": "Dune" },
{ "id": 2, "title": "Foundation" },
{ "id": 3, "title": "Hyperion" }
],
"hasNextPage": true,
"endCursor": "eyJpZCI6M30="
}
}
}
Ile devam etme after
bağımsız değişkeni, after sonraki sayfa için devamlılık belirtecini belirtir. Değer, önceki sayfadan son kaydı temsil eden base64 kodlu bir imleçtir.
Uyarı
bağımsız değişkeni, after önceki sayfanın sona erdiği yeri işaretleyen opak bir belirteç taşır. Belirteçleri sabit olarak kabul edin ve hiçbir zaman bunları oluşturma veya düzenlemeye çalışma.
Bu örnekte, son sayfanın imlecinden sonraki üç kitabı alıyoruz.
GraphQL sorgusu
query {
books(first: 3, after: "eyJpZCI6M30=") {
items {
id
title
}
hasNextPage
endCursor
}
}
Kavramsal SQL
SELECT TOP (3)
id,
sku_title AS title
FROM dbo.books
WHERE id > 3
ORDER BY id ASC;
Örnek yanıt
{
"data": {
"books": {
"items": [
{ "id": 4, "title": "I, Robot" },
{ "id": 5, "title": "The Left Hand of Darkness" },
{ "id": 6, "title": "The Martian" }
],
"hasNextPage": true,
"endCursor": "eyJpZCI6Nn0="
}
}
}
İç içe sayfalandırma
Sayfalandırma, sayfalandırılmış kitap listesi olan yazarları alma gibi ilgili koleksiyonlara uygulanabilir.
GraphQL sorgusu
query {
authors {
items {
id
name
books(first: 2) {
items {
id
title
}
hasNextPage
endCursor
}
}
}
}
Kavramsal SQL
-- parent
SELECT
id,
name
FROM dbo.authors;
-- child
SELECT TOP (2)
author_id,
id,
sku_title AS title
FROM dbo.books
WHERE author_id IN (@a1, @a2)
ORDER BY id ASC;
Uyarı
Herhangi bir şema veya sıralama değişikliği, daha önce verilen belirteçleri geçersiz kılır. İstemciler sayfalandırmayı ilk sayfadan yeniden başlatmalıdır.
Ö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.