Sdílet prostřednictvím


Omezení velikosti stránky v first GraphQL

Omezení velikosti stránky brání zahlcení klientů nebo serverů při dotazování velkých datových sad. Tvůrce rozhraní DATA API (DAB) v GraphQL používá first argument k řízení počtu vrácených záznamů v jedné odpovědi. Jazyk DAB interně používá stránkování na základě kurzoru, ale first dá se použít nezávisle na tom, aby se velikost výsledku jednoduše chystala.

Poznámka:

first omezuje počet vrácených záznamů, ale nezpracuje pokračování. Pro více stránek použijte after.

Přejděte do verze REST tohoto dokumentu.

Přehled

Koncepce Description
Výchozí velikost stránky runtime.pagination.default-page-size (výchozí hodnota je 100)
Maximální velikost stránky runtime.pagination.max-page-size (výchozí hodnota je 1 00000)
Přepsání klienta first
Požadavek na maximum Předání -1 žádosti o nakonfigurovanou maximální velikost stránky

Pokud first tuto hodnotu vynecháte, použije se výchozí velikost stránky automaticky.

Vzor použití

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

Example

Omezte výsledky na pět knih.

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

Koncepční SQL

SELECT TOP (5)
  id,
  sku_title AS title
FROM dbo.books
ORDER BY id ASC;

Ukázková odpověď

{
  "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" }
      ]
    }
  }
}

Pravidla ověřování

Vstup Result
Vynechal Používá default-page-size
Kladné celé číslo ≤ max Přijato
-1 Rozbalené na max-page-size
0 Chyba (neplatná)
< -1 Error
> max-page-size Error

Příklad chybové zprávy

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

Příklad konfigurace

{
  "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" ]
        }
      }
    }
  }
}

Viz také

Koncepce REST GraphQL Účel
Projection $select items Výběr polí, která se mají vrátit
Filtering $filter filtr Omezení řádků podle podmínky
Řazení $orderby orderBy Definování pořadí řazení
Velikost stránky $first first Omezení počtu položek na stránku
Pokračování $after po Pokračovat z poslední stránky pomocí kurzoru

Poznámka:

Klíčová slova REST začínají následujícími konvencemi $OData.