Beste Weg für die Gestaltung einer Paginierung Endpunkt in einem RESTful-Web-Service
Habe ich meine /entities
Endpunkt auf meine RESTful-Web-Service, das gibt alle die gespeicherten Objekte auf die Datenbank, wenn der Aufruf mit einem GET
Anfrage.
Was möchte ich jetzt schaffen, ist eine Paginierung Funktionalität. Die Fähigkeit zum abrufen von nur einer Seite dieser Ergebnisse, und nicht alle Personen, nur für die Frage der Minimierung der Antwort Größe.
Ich denke an zwei Möglichkeiten, dies zu tun.
-
Senden Sie die Paginierung Informationen über query Parameter auf die
/entities
Endpunkt mit einemGET
Anfrage. Zum Beispiel/entities?page=1&size=10
-
Verwenden Sie einen anderen
HTTP Method
wieOPTIONS
(ich weiß, es ist nicht entworfen, um verwendet werden, für die diese Art der Sache). Ich glaube nicht, GriffOPTIONS
Anfragen auf meiner Web-Service, und ich kann es nutzen, dass, während die Essenz eines RESTful web service mit verschiedenenHTTP Methods
für verschiedene Aktionen. In diesem Fall wird der Endpunkt könnte so etwas wie dieses:/entities/1/10
, die (glaube ich) ist mehr benutzerfreundliche.
Beide alternativen umgesetzt werden können, und ich wollte vorher wissen, welche wäre mehr kompatibel mit dem REST standard.
- mögliche Duplikate von Seitenumbruch in eine REST-web-Anwendung
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als aljo f erwähnt, es ist kein offizieller standard. Aber auf der Suche nach besten Praktiken, stieß ich auf diese Seite:
http://www.restapitutorial.com
In der Ressourcen-Seite gibt es einen link zum download .pdf-Datei enthält den kompletten REST best practices vorgeschlagen durch den Autor. In dem unter anderem gibt es einen Abschnitt über die Paginierung.
Dem Autor vorschlagen, hinzufügen der Unterstützung, um die beide mit einem Range-header und mithilfe von query-string-Parameter.
Anfrage
HTTP-header Beispiel:
Abfrage-string Parameter Beispiel:
Wo offset ist der Anfang Artikelnummer und limit wird die maximale Anzahl der Elemente zurück.
Antwort
Die Antwort sollte ein Content-Range-header, der angibt, wie viele Elemente zurückgegeben werden und wie viele Elemente insgesamt vorhanden sind, noch abgerufen werden
HTTP-header Beispiele:
In der .pdf es gibt einige andere Vorschläge für spezifischere Fälle.
Ich glaube, es gibt keine offizielle "standard" für RESTful-web-services. Aber es gibt viele Empfehlungen/Implementierungen von verschiedenen Anbietern.
Ihre erste Möglichkeit, mithilfe von query Parameter wäre die richtige. Die verschiedenen HTTP-Methoden (GET, PUT, DELETE, POST) verwendet werden, für verschiedene Arten von Operationen. Ich habe noch nie gehört von Ihnen werden verwendet zum ändern von vorhandenen Operationen.
Finden Sie Wikipedia - REST
Basiert auf HATEOAS (Hypermedia as the Engine of Application State) standard, die Reaktion soll im Zusammenhang mit vorherigen und nächsten Seite.
/entities?page=1&size=10
ist bevorzugt über/entities/1/10
als (genaugenommen) 1/10 ist nicht eine Ressource, um sich über URI.