Az oldalméret korlátozása a first GraphQL-ben

Az oldalméret korlátozása megakadályozza az ügyfelek vagy kiszolgálók túlterhelését nagy adathalmazok lekérdezésekor. A GraphQL-ben a Data API Builder (DAB) az first argumentum használatával szabályozza, hogy hány rekordot ad vissza egyetlen válasz. A DAB belsőleg alkalmazza a kurzoralapú lapozást, de first önállóan is használható az eredmény méretének lekorlátozására.

Megjegyzés:

first korlátozza a visszaadott rekordok számát, de maga nem kezeli a folytatást. Több oldal esetén használja a következőt after: .

Lépjen a dokumentum REST-verziójára.

Áttekintés

Concept Description
Alapértelmezett oldalméret runtime.pagination.default-page-size (alapértelmezett érték: 100)
Oldalméret maximális mérete runtime.pagination.max-page-size (alapértelmezés szerint 100000)
Ügyfél felülbírálása first
Maximális kérés Pass -1 a konfigurált maximális oldalméret kéréséhez

Ha first nincs megadva, az alapértelmezett oldalméret automatikusan érvényes.

Használati minta

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

Example

Az eredmények korlátozása öt könyvre.

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

Fogalmi SQL

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

Mintaválasz

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

Érvényesítési szabályok

Bemenet Result
Kihagyva Használ default-page-size
Pozitív egész szám ≤ max. Elfogadott
-1 Kibontva max-page-size
0 Hiba (érvénytelen)
< -1 Error
> max-page-size Error

Példa hibaüzenet

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

Konfigurációs példa

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

Lásd még

Concept REST GraphQL Cél
Projection $select Elemek Adja meg, hogy mely mezőket adja vissza
Filtering $filter szűrő Sorok korlátozása feltétel szerint
Rendezés $orderby orderBy Rendezési sorrend meghatározása
Oldalméret $first first Az elemek számának korlátozása oldalanként
Folytatás $after után Folytatás az utolsó oldalról kurzor használatával

Megjegyzés:

A REST-kulcsszavak az OData-konvenciók követésével $kezdődnek.