343 Stimmen

Paginierung in einer REST-Webanwendung

Dies ist eine allgemeinere Umformulierung von diese Frage (mit der Eliminierung der Rails-spezifischen Teile)

Ich bin nicht sicher, wie Paginierung auf eine Ressource in einer RESTful-Webanwendung zu implementieren. Angenommen, ich habe eine Ressource namens products Welcher der folgenden Ansätze ist Ihrer Meinung nach der beste und warum?

1. Nur Abfragezeichenfolgen verwenden

z. B. http://application/products?page=2&sort_by=date&sort_how=asc
Das Problem dabei ist, dass ich kein Full Page Caching verwenden kann und dass die URL nicht sehr sauber und leicht zu merken ist.

2. Verwendung von Seiten als Ressourcen und Abfragezeichenfolgen für die Sortierung

z. B. http://application/products/page/2?sort_by=date&sort_how=asc
In diesem Fall ist das Problem, das wir sehen, dass http://application/products/pages/1 ist keine eindeutige Ressource, da die Verwendung von sort_by=price kann zu einem völlig anderen Ergebnis führen Ich kann das Seiten-Caching immer noch nicht nutzen.

3. Verwendung von Seiten als Ressourcen und eines URL-Segments für die Sortierung

z. B. http://application/products/by-date/page/2
Ich persönlich sehe kein Problem darin, diese Methode zu verwenden, aber jemand hat mich gewarnt, dass dies kein guter Weg ist (er hat keinen Grund genannt, wenn Sie also wissen warum es nicht empfohlen wird, lassen Sie es mich bitte wissen)

Jede Vorschläge, Meinungen und Kritiken sind mehr als willkommen. Danke!

0voto

Alex Punkte 4166

Ich habe Lösung 3 verwendet, bevor (Ich schreibe eine Menge von django apps). Und ich denke nicht, dass es etwas falsch mit ihm ist. Sie ist genauso generierbar wie die anderen beiden (für den Fall, dass man ein Massen-Scraping oder ähnliches durchführen muss) und sieht sauberer aus. Außerdem können die Benutzer die URLs erraten (wenn es sich um eine öffentlich zugängliche Anwendung handelt), und die Leute mögen es, wenn sie direkt dorthin gehen können, wohin sie wollen, und das Erraten von URLs fühlt sich ermächtigend an.

0voto

Eugene Punkte 1505

Ich verwende in meinen Projekten die folgenden URLs:

http://application/products?page=2&sort=+field1-field2

was bedeutet: "Gib mir die zweite Seite in aufsteigender Reihenfolge nach Feld1 und dann in absteigender Reihenfolge nach Feld2". Oder wenn ich noch mehr Flexibilität brauche, verwende ich:

http://application/products?skip=20&limit=20&sort=+field1-field2

0voto

Susanta Ghosh Punkte 1

Ich verwende die folgenden Muster, um den Datensatz der nächsten Seite zu erhalten. http://application/products?lastRecordKey=?&pageSize=20&sort=ASC

RecordKey ist die Spalte einer Tabelle, die einen sequentiellen Wert in der DB enthält. Dies wird verwendet, um jeweils nur eine Seite aus der DB zu holen. pageSize wird verwendet, um zu bestimmen, wie viele Datensätze abgerufen werden sollen. sort wird verwendet, um die Datensätze in aufsteigender oder absteigender Reihenfolge zu sortieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X