Paginierung
Blättern Sie mit den Parametern page und pageSize durch Listen der REST-API, und lesen Sie mit den Antwortfeldern total und hasNext jede Seite.
Listenvorgänge geben ihre Ergebnisse seitenweise zurück. Seite und Seitengröße wählen Sie mit Abfrageparametern, und die Antwort gibt an, wie viele Elemente es gibt und ob weitere Seiten folgen.
Parameter
Die meisten Listenvorgänge akzeptieren diese Parameter:
| Parameter | Typ | Standardwert | Zulässige Werte |
|---|---|---|---|
page | integer | 1 | 1 oder mehr. Seiten werden ab 1 nummeriert. |
pageSize | integer | 50 | 1–200 Elemente pro Seite. |
Ein Wert außerhalb dieser Wertebereiche gibt 422 Unprocessable Entity mit dem Code VALIDATION_FAILED zurück. Einige Listenvorgänge verwenden andere Limits; die API-Referenz führt sie auf. Viele Listenvorgänge akzeptieren auch Filter- und Sortierparameter, z. B. q für eine Textsuche. Die API-Referenz führt die Parameter jedes Vorgangs auf.
Antwortformat
{
"data": [
{ "id": "3e1f0c9a8b7d4e6f9a2b1c0d8e7f6a5b", "name": "data-01" }
],
"meta": {
"page": 1,
"pageSize": 50,
"total": 128,
"hasNext": true
}
}| Feld | Bedeutung |
|---|---|
data | Die Elemente auf dieser Seite. Das Beispiel kürzt jedes Element. |
meta.page | Die Nummer dieser Seite. |
meta.pageSize | Die Seitengröße, die für diese Anfrage galt. |
meta.total | Die Anzahl der Elemente auf allen Seiten zusammen. |
meta.hasNext | true, wenn auf diese Seite weitere Elemente folgen, also wenn page × pageSize kleiner als total ist. |
Einige Listenvorgänge geben alle ihre Elemente auf einmal als { "data": [...] } ohne meta zurück und akzeptieren keine Paginierungsparameter. So funktioniert z. B. die Liste der offenen Volume-Übertragungen eines Projekts.
Alle Seiten lesen
Fordern Sie Seiten mit aufsteigenden Werten für page an, bis meta.hasNext false ist:
page=1
while :; do
resp=$(curl -s "https://<api-host>/api/v1/scopes/<project-id>/storage/volumes?page=$page&pageSize=200" \
-H "Authorization: Bearer $PC_TOKEN")
echo "$resp" | jq -c '.data[]'
[ "$(echo "$resp" | jq -r '.meta.hasNext')" = "true" ] || break
page=$((page + 1))
done<api-host>: der Hostname der API.<project-id>: die ID des Projekts.
Seiten werden bei der Anfrage nach ihrer Position in der Liste berechnet. Wenn während des Lesens Elemente erstellt oder gelöscht werden, kann ein Element auf eine benachbarte Seite rutschen, sodass Sie es verpassen oder doppelt lesen. Für eine konsistente Sicht lesen Sie die Seiten in schneller Folge und entfernen Duplikate anhand der IDs der Elemente.