Paginierung¶
Paginierung (auch Batching gennannt) bezeichnet das Aufteilen von Resultaten auf mehrere “Seiten”, um den Server nicht unnötig zu belasten und die Grösse von Responses kontrollierbar zu halten.
Repräsentationen von Collection-artigen Resourcen werden in der API paginiert wenn die Anzahl Resultate die Batch-Grösse (standardmässig 25) überschreitet.
{
"@id": "http://example.org/dossier/@search",
"batching": {
"@id": "http://example.org/dossier/@search?b_size=10&b_start=20",
"first": "http://example.org/dossier/@search?b_size=10&b_start=0",
"last": "http://example.org/dossier/@search?b_size=10&b_start=170",
"prev": "http://example.org/dossier/@search?b_size=10&b_start=10",
"next": "http://example.org/dossier/@search?b_size=10&b_start=30"
},
"items": [
"..."
],
"items_total": 175,
}
Die Batch-Grösse kann pro Request über den Query-String Parameter b_size
gesteuert werden.
Wenn Resultate über mehrere Seiten verteilt werden mussten, sind im Top-Level
Property batching
Hypermedia-Links zur Navigation der Batches enthalten.
Falls hingegen alle Resultate auf einer Seite Platz haben, wird das Top-Level
Property batching
weggelassen.
Top-level Properties¶
Property | Description |
---|---|
@id |
Kanonische basis-URL für die entsprechende Resource, ohne irgendwelche Batching-Parameter |
items |
Batch mit den Resultaten der aktuellen Seite |
items_total |
Anzahl Resultate insgesamt |
batching |
Hypermedia-Links zur Navigation der Batches |
Batching links¶
Falls die Resultate über mehrere Seiten verteilt werden mussten, enthält der
Response-Body auf der obersten Ebene ein Property batching
, welches
Links zur Navigation der Batches enthält. Diese Links können von einem Client
verwendet werden, um die Seiten einer paginierten Resultatliste zu
navigieren:
Attribute | Description |
---|---|
@id |
Link zur aktuellen Seite |
first |
Link zur ersten Seite |
prev |
Link zur vorherigen Seite (falls vorhanden) |
next |
Link zur nächsten Seite (falls vorhanden) |
last |
Link zur letzten Seite |
Parameter¶
Die Paginierung kann mittels zwei Query-String Parametern kontrolliert werden.
Um eine bestimmte Seite zu addressieren, kann der Parameter b_start
verwendet werden. Mit dem Parameter b_size
kann gesteuert werden, wieviele
Resultate eine Seite (maximal) enthalten soll.
Parameter | Beschreibung |
---|---|
b_size |
Anzahl Resultate pro Seite (default ist 25) |
b_start |
Erstes Resultat ab welchem die Batch-Seite beginnen soll |
Komplettes Beispiel einer paginierten Response:
GET /dossier/@search?b_size=5&sort_on=path HTTP/1.1
Accept: application/json
HTTP/1.1 200 OK
Content-Type: application/json
{
"@id": "http://example.org/dossier/@search",
"batching": {
"@id": "http://example.org/dossier/@search?b_size=5&sort_on=path",
"first": "http://example.org/dossier/@search?b_size=5&sort_on=path&b_start=0",
"last": "http://example.org/dossier/@search?b_size=5&sort_on=path&b_start=5",
"next": "http://example.org/dossier/@search?b_size=5&sort_on=path&b_start=5"
},
"items": [
{
"@id": "http://example.org/plone/dossier",
"@type": "opengever.dossier.businesscasedossier",
"UID": "a3c9f8a47655463ea7a4a43bf1fdf40c",
"description": "",
"title": "Folder"
},
{
"@id": "http://example.org/dossier/doc-1",
"@type": "opengever.document.document",
"UID": "b3c9f8a47655463ea7a4a43bf1fdf40c",
"description": "",
"title": "Document 1"
},
{
"@id": "http://example.org/dossier/doc-2",
"@type": "opengever.document.document",
"UID": "c3c9f8a47655463ea7a4a43bf1fdf40c",
"description": "",
"title": "Document 2"
},
{
"@id": "http://example.org/dossier/doc-3",
"@type": "opengever.document.document",
"UID": "d3c9f8a47655463ea7a4a43bf1fdf40c",
"description": "",
"title": "Document 3"
},
{
"@id": "http://example.org/dossier/doc-4",
"@type": "opengever.document.document",
"UID": "e3c9f8a47655463ea7a4a43bf1fdf40c",
"description": "",
"title": "Document 4"
}
],
"items_total": 8
}