Esta publicação do blog faz parte da série em curso "Perguntas frequentes sobre OData"
Hoje vamos ver as definições de consulta do sistema para $top, $skip para paginação e $count/$inlinecount para obter uma contagem do número de registros no conjunto de registros.
Como restringir a quantidade de dados retornados?
Isso é feito calculando um deslocamento e a quantidade de registros a serem retornados. O deslocamento é definido usando a opção de consulta do sistema $skip e a quantidade de elementos retornados através da opção de consulta do sistema $top. Se apenas os primeiros n elementos forem necessários, é suficiente omitir a diretiva $skip.
http://odata.netflix.com/v2/Catalog/Titles?$top=5
retornará os 5 primeiros elementos do catálogo de títulos na Netflix. Aqui estamos usando um $skip implícito de 0 e um $top de 5.
Compare isso com o seguinte que retorna os títulos de 1 a 6 no catálogo da Netflix
http://odata.netflix.com/v2/Catalog/Titles?$top=5&$skip=1
Aqui estamos usando um $top explícito de 1, o que significa pular o primeiro registro e depois retornar os próximos 5 registros que são os títulos 1-6 no catálogo.
Como obter o número de registros no conjunto?
Obter o número de registros em um conjunto é normalmente feito de duas maneiras, dependendo do contexto.
Usando $count
A solicitação de serviço $count retorna o número de registros em uma coleção ou, se a coleção tiver um filtro, o número de registros que correspondem ao filtro.
Por exemplo, para obter uma contagem do número de títulos que a Netflix tem armazenados, você usaria:
http://odata.netflix.com/v2/Catalog/Titles/$count
Até o momento da escrita deste texto, é relatado como 160050
Usando $inlineCount
A outra opção é usar a diretiva $inlinecount para obter a contagem como parte do corpo da resposta. Por exemplo, se você deseja ler os 5 registros mas também gostaria de saber quantos registros existem no total para que os controles de paginação e a etiqueta de contagem de registros, por exemplo, sejam atualizados, então a contagem será retornada no elemento de contagem no espaço de nomes de metadados.
<feed
. xmlns:m="
http://schemas.microsoft.com/ado/2007/08/dataservices/metadata
" ...>
...
<m:count>160050</m:count>
ou em JSON
d: {
results: [.....],
"__count": "160050"
};
Por exemplo, para obter uma contagem do número de títulos que a Netflix tem disponíveis, bem como os primeiros 5 registros, você faria a solicitação
http://odata.netflix.com/v2/Catalog/Titles?$top=5&$inlinecount=allpages
.
Isso retornará o mesmo número de registros que $count no elemento ou propriedade de contagem, mas apenas os primeiros 5 entidades serão retornados conforme solicitado pela opção de consulta do sistema $top. Isso é muito útil no cenário móvel onde a paginação é tipicamente usada para melhorar o desempenho. Por exemplo, podemos pegar a contagem e