Come dovrebbe un'API RESTful gestire l'impaginazione nella situazione in cui un cliente può volere la possibilità di passare a pagine arbitrarie? Supponiamo di utilizzare l'intestazione Link
nel modo in cui l' API GitHub :
Link: <https://api.github.com/user/repos?page=3&per_page=100>; rel="next", <https://api.github.com/user/repos?page=50&per_page=100>; rel="last"
L'API, come molti altri, restituisce collegamenti alla pagina successiva, alla pagina precedente, alla prima pagina e all'ultima pagina. Ciò non tiene conto del caso d'uso relativamente comune di fornire sui link lato client a un intervallo di pagine e non solo al prossimo / precedente / primo / ultimo. Se, ad esempio, la richiesta restituisce 100 pagine di risultati, il cliente potrebbe voler consentire la possibilità di passare a una pagina arbitraria. Come dovrebbe essere fatto aderendo strettamente ai concetti di REST?
Alcune opzioni possibili:
- Lascia che il cliente deduca gli altri link. Hai la prima e l'ultima pagina, potrebbe essere un ragionevole presupposto modificare il link per ottenere le altre pagine. Questo sembra andare contro HATEOAS (che è sempre il principio di REST che sembra causare problemi).
- Restituisce un link ad ogni pagina. Questo sembra ingombrante in quanto il numero potenziale di pagine potrebbe essere elevato.
- Restituisce un collegamento a un piccolo intervallo di pagine (forse 2 su entrambi i lati della pagina corrente). Questo sembra un approccio relativamente ragionevole, ma limita le opzioni che i client hanno quando si tratta di visualizzare le informazioni di paginazione.