Condividi tramite


Limitazione delle dimensioni della pagina con first in GraphQL

La limitazione delle dimensioni della pagina impedisce il sovraccarico di client o server durante l'esecuzione di query su set di dati di grandi dimensioni. In GraphQL il generatore di API dati (DAB) usa l'argomento first per controllare il numero di record restituiti in una singola risposta. DAB applica internamente la paginazione basata su cursore, ma first può essere usata in modo indipendente per limitare semplicemente le dimensioni dei risultati.

Annotazioni

first limita il numero di record restituiti, ma non gestisce la continuazione. Per più pagine, usare after.

Passare alla versione REST di questo documento.

Informazioni generali

Concetto Description
Dimensioni pagina predefinite runtime.pagination.default-page-size (il valore predefinito è 100)
Dimensioni massime pagina runtime.pagination.max-page-size (il valore predefinito è 100000)
Override del client first
Richiesta max Passare -1 per richiedere le dimensioni massime della pagina configurate

Se first viene omesso, la dimensione predefinita della pagina viene applicata automaticamente.

Modello di utilizzo

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

Example

Limitare i risultati a cinque libri.

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

SQL concettuale

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

Risposta di esempio

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

Regole di convalida

Input Result
Mancante Utilizzazioni default-page-size
Numero intero positivo ≤ max Accettato
-1 Espansa a max-page-size
0 Errore (non valido)
< -1 Errore
> max-page-size Errore

Messaggio di errore di esempio

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

Configurazione di esempio

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

Vedere anche

Concetto REST GraphQL Scopo
Projection $select Elementi Scegliere i campi da restituire
Filtraggio $filter filtro Limitare le righe per condizione
Ordinamento $orderby orderBy Definire l'ordinamento
Dimensioni pagina $first primo Limitare il numero di elementi per pagina
Continuazione $after dopo Continuare dall'ultima pagina usando un cursore

Annotazioni

Le parole chiave REST iniziano con $, seguendo le convenzioni OData.