Esta publicación de blog es parte de la serie en curso "Preguntas frecuentes sobre OData"
Hoy veremos las definiciones de consulta del sistema para $top, $skip para la paginación y $count/$inlinecount para obtener un recuento del número de registros en el conjunto de registros.
¿Cómo restringir la cantidad de datos devueltos?
Esto se hace calculando un desplazamiento y la cantidad de registros a devolver. El desplazamiento se establece usando la opción de consulta del sistema $skip y la cantidad de elementos devueltos a través de la opción de consulta del sistema $top. Si solo se requieren los primeros n elementos, es suficiente omitir la directiva $skip.
http://odata.netflix.com/v2/Catalog/Titles?$top=5
devolverá los 5 primeros elementos del catálogo de títulos en Netflix. Aquí estamos usando un $skip implícito de 0 y un $top de 5.
Compara esto con lo siguiente que devuelve los títulos del 1 al 6 en el catálogo de Netflix
http://odata.netflix.com/v2/Catalog/Titles?$top=5&$skip=1
Aquí estamos usando un $top explícito de 1, lo que significa omitir el primer registro y luego devolver los siguientes 5 registros que son los títulos 1-6 en el catálogo.
¿Cómo obtengo el número de registros en el conjunto?
Obtener el número de registros en un conjunto se hace normalmente de dos maneras dependiendo del contexto.
Usando $count
La solicitud de servicio $count devuelve el número de registros en una colección o, si la colección tiene un filtro, el número de registros que coinciden con el filtro.
Por ejemplo, para obtener un recuento del número de títulos que Netflix tiene almacenados, usarías:
http://odata.netflix.com/v2/Catalog/Titles/$count
Hasta el momento de escribir esto, se informa como 160050
Usando $inlineCount
La otra opción es usar la directiva $inlinecount para obtener el recuento como parte del cuerpo de respuesta. Por ejemplo, si deseas leer los 5 registros pero también te gustaría saber cuántos registros hay en total para que los controles de paginación y la etiqueta de recuento de registros, por ejemplo, se actualicen, entonces el recuento se devolverá en el elemento de recuento en el espacio de nombres de metadatos.
<feed …. xmlns:m="
http://schemas.microsoft.com/ado/2007/08/dataservices/metadata
" ...>
...
<m:count>160050</m:count>
o en JSON
d: {
results: [.....],
"__count": "160050"
};
Por ejemplo, para obtener un recuento del número de títulos que Netflix tiene disponibles, así como los primeros 5 registros, harías la solicitud
http://odata.netflix.com/v2/Catalog/Titles?$top=5&$inlinecount=allpages
.
Esto devolverá el mismo número de registros que $count en el elemento o propiedad de recuento, pero solo se devolverán las primeras 5 entidades según lo solicitado por la opción de consulta del sistema $top. Esto es muy útil en el escenario móvil donde la paginación se utiliza típicamente para mejorar el rendimiento. Por ejemplo, podemos tomar el recuento y