Compartir a través de


Limitación del tamaño de página con $first en REST

Limitar el tamaño de página impide que los clientes o servidores sobrepase al consultar grandes conjuntos de datos. En REST, Data API Builder (DAB) usa el $first parámetro para controlar cuántos registros se devuelven en una única respuesta. DAB aplica la paginación basada en cursores internamente, pero $first se puede usar incluso cuando no se requiere continuación.

Nota:

$first limita el número de filas devueltas, pero no controla la continuación. Para varias páginas, use $after.

Vaya a la versión de GraphQL de este documento.

Información general

Concepto Description
Tamaño de página predeterminado runtime.pagination.default-page-size (el valor predeterminado es 100)
Tamaño máximo de página runtime.pagination.max-page-size (el valor predeterminado es 100000)
Invalidación de cliente $first
Solicitud máxima $first=-1 solicita el tamaño máximo de página configurado.

Si $first se omite, el tamaño de página predeterminado se aplica automáticamente.

Patrón de uso

GET /api/{entity}?$first=N

Example

Limite los resultados a cinco libros.

GET /api/books?$first=5

Conceptual SQL

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

Respuesta de ejemplo

{
  "value": [
    { "id": 1, "title": "Dune" },
    { "id": 2, "title": "Foundation" },
    { "id": 3, "title": "Hyperion" },
    { "id": 4, "title": "I, Robot" },
    { "id": 5, "title": "The Martian" }
  ]
}

Reglas de validación

Input Resultado
Omitido Usos default-page-size
Número entero positivo ≤ máximo Aceptado
-1 Expandido a max-page-size
0 400 (no válido)
< -1 400
> max-page-size 400

Mensaje de error de ejemplo

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

Ejemplo de configuración

{
  "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 también

Concepto REST GraphQL Propósito
Projection $select items Elección de los campos que se van a devolver
Filtros $filter filtro Restricción de filas por condición
Ordenación $orderby orderBy Definición del criterio de ordenación
Tamaño de página $first primero Limitar el número de elementos por página
Continuación $after después Continuar desde la última página con un cursor

Nota:

Las palabras clave rest comienzan por $, siguiendo las convenciones de OData.