Səhifələmə

REST API siyahılarını page və pageSize parametrləri ilə səhifə-səhifə oxuyun, bütün səhifələri oxumaq üçün cavabın total və hasNext sahələrindən istifadə edin.

Siyahı əməliyyatları nəticələrini hər dəfə bir səhifə olmaqla qaytarır. Səhifəni və onun ölçüsünü sorğu parametrləri ilə seçirsiniz, cavab isə neçə element olduğunu və daha çox səhifənin olub-olmadığını bildirir.

Parametrlər

Siyahı əməliyyatlarının çoxu bu parametrləri qəbul edir:

ParametrTipStandartİcazə verilən dəyərlər
pagetam ədəd11 və ya daha çox. Səhifələr 1-dən nömrələnir.
pageSizetam ədəd50Səhifədə 1–200 element.

Bu diapazonlardan kənar dəyər VALIDATION_FAILED kodu ilə 422 Unprocessable Entity qaytarır. Bir neçə siyahı əməliyyatı başqa limitlərdən istifadə edir; onları API istinadı sadalayır. Bir çox siyahı əməliyyatı həmçinin süzgəc və sıralama parametrlərini qəbul edir, məsələn, mətn axtarışı üçün q. Hər əməliyyatın parametrlərini API istinadı sadalayır.

Cavab formatı

Siyahının bir səhifəsi
{
  "data": [
    { "id": "3e1f0c9a8b7d4e6f9a2b1c0d8e7f6a5b", "name": "data-01" }
  ],
  "meta": {
    "page": 1,
    "pageSize": 50,
    "total": 128,
    "hasNext": true
  }
}
SahəMənası
dataBu səhifədəki elementlər. Nümunədə hər element qısaldılıb.
meta.pageBu səhifənin nömrəsi.
meta.pageSizeBu sorğuya tətbiq olunan səhifə ölçüsü.
meta.totalBütün səhifələrdəki elementlərin ümumi sayı.
meta.hasNextBu səhifədən sonra daha çox element olduqda, yəni page × pageSize dəyəri total dəyərindən az olduqda true.

Bir neçə siyahı əməliyyatı bütün elementlərini bir dəfəyə, meta olmadan { "data": [...] } şəklində qaytarır və səhifələmə parametrlərini qəbul etmir. Məsələn, layihənin (project) açıq disk (volume) ötürmələrinin siyahısı belə işləyir.

Bütün səhifələri oxuyun

meta.hasNext dəyəri false olana qədər artan page nömrələri ilə səhifələri tələb edin:

Layihənin bütün disklərini sadalayın
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 host adı.
  • <project-id>: layihənin ID-si.

Səhifələr siz onları tələb etdiyiniz zaman siyahıdakı mövqeyə görə hesablanır. Səhifələri oxuduğunuz müddətdə elementlər yaradılarsa və ya silinərsə, element qonşu səhifəyə keçə bilər, ona görə onu buraxa və ya iki dəfə oxuya bilərsiniz. Ardıcıl nəticə almaq üçün səhifələri bir-birinin ardınca tez oxuyun və dublikatları silmək üçün elementlərin ID-lərindən istifadə edin.

Bu səhifədə