Aracılığıyla paylaş


GraphQL'de ile first sayfa boyutunu sınırlama

Sayfa boyutunu sınırlamak, büyük veri kümelerini sorgularken istemcilerin veya sunucuların aşırı olmasını önler. GraphQL'de, Veri API oluşturucusu (DAB) bağımsız değişkenini first kullanarak tek bir yanıtta kaç kaydın döndürüleceklerini denetler. DAB, imleç tabanlı sayfalandırmayı dahili olarak uygular, ancak first yalnızca sonuç boyutunu büyük harfe döndürmek için bağımsız olarak kullanılabilir.

Uyarı

first döndürülen kayıtların sayısını sınırlar, ancak devamlılığı kendisi işlemez. Birden çok sayfa için kullanın after.

Bu belgenin REST sürümüne gidin.

Genel Bakış

Konsept Description
Varsayılan sayfa boyutu runtime.pagination.default-page-size (varsayılan değer 100'dır)
En büyük sayfa boyutu runtime.pagination.max-page-size (varsayılan değer: 100000)
İstemci geçersiz kılma first
Maksimum istekte bulunma Yapılandırılan en büyük sayfa boyutunu istemek için geçir -1

Atlanırsa first , varsayılan sayfa boyutu otomatik olarak uygulanır.

Kullanım düzeni

query {
  books(first: N) {
    items { id title }
  }
}

Example

Sonuçları beş kitapla sınırlayın.

query {
  books(first: 5) {
    items {
      id
      title
    }
  }
}

Kavramsal SQL

SELECT TOP (5)
  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" },
        { "id": 4, "title": "I, Robot" },
        { "id": 5, "title": "The Martian" }
      ]
    }
  }
}

Doğrulama kuralları

Veri Girişi Result
Atla Kullanır default-page-size
Pozitif tamsayı ≤ maksimum Kabul edildi
-1 Genişletilmiş: max-page-size
0 Hata (geçersiz)
< -1 Hata
> max-page-size Hata

Örnek hata iletisi

Invalid number of items requested, first argument must be either -1 or a positive number within the max page size limit of 100000. Actual value: 0

Ö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.