E' il terzo tip sulla nuova interfaccia REST di SharePoint 2013. Fino ad ora abbiamo imparato sia a filtrare i risultati, sia recuperare solo le proprietà che ci interessano di una risorsa. Oggi vedremo come paginare i risultati e come ordinarli.

L'oridinamento è facile. Basta utilizzare la querystring "$orderby", specificare il campo per cui si vuole ordinare i risultati e il tipo di ordinamento, se discendente ("desc") o se ascendente ("asc").
Se volessimo ritornare tutte le liste di un sito, ordinate in base al nome, dovremmo quindi utilizzare la seguente URL:

http://[siteurl]/_api/web/lists?$orderby=Title asc


La paginazione dei risultati di una richiesta invece, è sempre una best practice da rispettare in qualsiasi applicazione che si basa su dati presi da fonti di date esterne, soprattutto in applicazioni come quelle che andremo a sviluppare, basate su richieste HTTP.
Per paginare, il servizio REST di SharePoint 2013 (seguendo le regole del protocollo OData) espone gli operatori "$top" e "$skip", utili rispettivamente a specificare il numero di elementi per pagina e il numero di elementi da saltare.
Quindi, volendo prelevare le prime 5 liste di un sito SharePoint, possiamo utilizzare la seguente URL:

http://[siteurl]/_api/web/lists?$top=5&$skip=0


In questo caso ho specificato anche il parametro $skip a puro titolo d'esempio, perchè di default (se non specificato) prendere il valore 0. Nel caso in cui volessimo visualizzare invece la seconda pagina di risultati, dobbiamo utilizzare la seguente URL:

http://[siteurl]/_api/web/lists/?$top=5&$skip=5


In questo modo sto dicendo la servizio REST di SharePoint 2013 di ritornarmi tutte le liste a partire dalla sesta fino alla decima.
Poi, fate conto che, è meglio spostare alla fine della URL questi parametri, perchè è sempre meglio prima applicare filtri, ordinamenti, selezioni, ecc.. per poi paginare.

Attenzione però! Sappiate che il parametro $skip, riguardo la selezione di elementi di lista (quindi, per intenderci, facendo un query tipo /_api/web/lists/getbytitle('LISTNAME')/items), viene IGNORATO!
Parlaremo a breve di questa issue, che è decisamente seccante.