Partilhar via


Limitar o tamanho da página com first no GraphQL

Limitar o tamanho da página evita sobrecarregar clientes ou servidores ao consultar grandes conjuntos de dados. No GraphQL, o construtor de API de dados (DAB) usa o first argumento para controlar quantos registros são retornados em uma única resposta. O DAB aplica paginação baseada em cursor internamente, mas first pode ser usado independentemente para simplesmente limitar o tamanho do resultado.

Observação

first limita o número de registros retornados, mas não lida com a continuação. Para várias páginas, use after.

Vá para a versão REST deste documento.

Visão geral

Concept Description
Tamanho de página padrão runtime.pagination.default-page-size (o padrão é 100)
Tamanho máximo da página runtime.pagination.max-page-size (o padrão é 100000)
Substituição do cliente first
Pedido máximo Passar -1 para solicitar o tamanho máximo de página configurado

Se first for omitido, o tamanho de página padrão será aplicado automaticamente.

Padrão de utilização

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

Example

Limite os resultados a cinco livros.

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

SQL conceitual

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

Resposta da amostra

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

Regras de validação

Entrada Result
Omitida Utilizações default-page-size
Inteiro positivo ≤ máx. Aceito
-1 Expandido para max-page-size
0 Erro (inválido)
< -1 Erro
> max-page-size Erro

Exemplo de mensagem de erro

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

Configuração de exemplo

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

Consulte também

Concept REST GraphQL Propósito
Projection $select items Escolha quais campos retornar
Filtering $filter filtrar Restringir linhas por condição
Classificação $orderby orderBy Definir a ordem de classificação
Tamanho da página $first first Limitar o número de itens por página
Continuação $after após Continue a partir da última página usando um cursor

Observação

As palavras-chave REST começam com $, seguindo as convenções OData.