Sayfalama

REST API listelerinde page ve pageSize parametreleriyle sayfalar arasında gezinin; tüm sayfaları okumak için yanıttaki total ve hasNext alanlarını kullanın.

Listeleme işlemleri sonuçlarını sayfa sayfa döndürür. Sayfayı ve sayfa boyutunu sorgu parametreleriyle seçersiniz; yanıt da kaç öğe olduğunu ve başka sayfaların gelip gelmediğini bildirir.

Parametreler

Listeleme işlemlerinin çoğu şu parametreleri alır:

ParametreTürVarsayılanİzin verilen değerler
pagetam sayı11 veya daha büyük. Sayfalar 1’den başlayarak numaralandırılır.
pageSizetam sayı50Sayfa başına 1–200 öğe.

Bu aralıkların dışındaki bir değer, VALIDATION_FAILED koduyla 422 Unprocessable Entity döndürür. Birkaç listeleme işlemi başka limitler kullanır; bunlar API referansı içinde listelenir. Birçok listeleme işlemi, metin araması için q gibi filtre ve sıralama parametrelerini de kabul eder. Her işlemin parametreleri API referansı içinde listelenir.

Yanıt biçimi

Bir listenin bir sayfası
{
  "data": [
    { "id": "3e1f0c9a8b7d4e6f9a2b1c0d8e7f6a5b", "name": "data-01" }
  ],
  "meta": {
    "page": 1,
    "pageSize": 50,
    "total": 128,
    "hasNext": true
  }
}
AlanAnlamı
dataBu sayfadaki öğeler. Örnekte her öğe kısaltılmıştır.
meta.pageBu sayfanın numarası.
meta.pageSizeBu istekte uygulanan sayfa boyutu.
meta.totalTüm sayfalardaki öğelerin toplam sayısı.
meta.hasNextBu sayfadan sonra başka öğeler varsa, yani page × pageSize değeri total değerinden küçükse true.

Birkaç listeleme işlemi tüm öğelerini tek seferde, meta olmadan { "data": [...] } olarak döndürür ve sayfalama parametresi almaz. Örneğin bir projenin açık disk aktarımlarının listesi bu şekilde çalışır.

Tüm sayfaları okuma

meta.hasNext değeri false olana kadar artan page numaralarıyla sayfa isteyin:

Bir projenin tüm disklerini listeleme
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>: API’nin ana bilgisayar adı.
  • <project-id>: projenin ID’si.

Sayfalar, istediğiniz anda listedeki konuma göre hesaplanır. Siz sayfaları okurken öğeler oluşturulur veya silinirse bir öğe komşu sayfaya kayabilir; bu nedenle onu kaçırabilir ya da iki kez okuyabilirsiniz. Tutarlı bir görünüm elde etmek için sayfaları hızlıca art arda okuyun ve yinelenenleri ayıklamak için öğelerin ID’lerini kullanın.

Bu sayfada