Azure-devops rest api - pagination dan rate limit

Sep 21 2020

Saya mencoba menarik data entitas Azure-Devops (tim, proyek, repositori, anggota, dll ...) dan memproses data tersebut secara lokal, saya tidak dapat menemukan dokumentasi apa pun terkait pembatasan tarif dan penomoran halaman, apakah ada yang punya pengalaman dengan itu?

Ada beberapa dokumentasi untuk pagination pada api anggota:
https://docs.microsoft.com/en-us/rest/api/azure/devops/memberentitlementmanagement/members/get?view=azure-devops-rest-6.0

Tapi itu satu-satunya, saya tidak bisa menemukan dokumentasi untuk salah satu entitas git,
misalnya: repositories.
https://docs.microsoft.com/en-us/rest/api/azure/devops/git/repositories/list?view=azure-devops-rest-6.0

Jika seseorang dapat mengarahkan saya ke dokumentasi yang tepat, atau menjelaskan subjek ini, itu akan sangat bagus.

Terima kasih.

Jawaban

LeoLiu-MSFT Sep 22 2020 at 09:44

Saya tidak dapat menemukan dokumentasi apa pun tentang pembatasan kecepatan dan penomoran halaman, apakah ada yang punya pengalaman dengan itu?

Ada dokumen tentang Batas layanan dan batas tarif , yang memperkenalkan batas layanan dan batas tarif yang harus dipenuhi oleh semua project dan organisasi.

Untuk Pembatasan Tarif:

Azure DevOps Services, seperti banyak solusi Software-as-a-Service, menggunakan multi-tenancy untuk mengurangi biaya dan untuk meningkatkan skalabilitas dan kinerja. Hal ini membuat pengguna rentan terhadap masalah kinerja dan bahkan pemadaman saat pengguna lain dari sumber daya bersama mengalami lonjakan konsumsi. Untuk mengatasi masalah ini, Layanan Azure DevOps membatasi sumber daya yang dapat digunakan individu dan jumlah permintaan yang dapat mereka buat ke perintah tertentu. Jika batas ini terlampaui, permintaan selanjutnya dapat ditunda atau diblokir.

Anda dapat melihat dokumentasi Batas harga untuk detailnya

Untuk penomoran halaman, umumnya, REST API akan memiliki respons paginasi dan ADO REST API biasanya memiliki batas 100/200 (tergantung API mana) per halaman di setiap respons. Cara untuk mengambil informasi halaman berikutnya adalah dengan merujuk header respons x-ms-continuationtokendan menggunakan ini untuk parameter permintaan berikutnya sebagai continuationToken.

Tetapi Microsoft tidak mendokumentasikannya dengan baik - ini seharusnya disebutkan di setiap panggilan API yang mendukung token lanjutan :

Bangunan - Daftar:

GET https://dev.azure.com/{organization}/{project}/_apis/build/builds?definitions={definitions}&continuationToken={continuationToken}&maxBuildsPerDefinition={maxBuildsPerDefinition}&deletedFilter={deletedFilter}&queryOrder={queryOrder}&branchName={branchName}&buildIds={buildIds}&repositoryId={repositoryId}&repositoryType={repositoryType}&api-version=5.1

Jika saya menggunakan REST API di atas dengan $top=50, seperti yang diharapkan, saya mendapatkan 50 kembali dan header bernama " x-ms-continuationtoken", maka kita dapat mengulang keluaran hasilnya dengan continuationtoken:

Anda dapat memeriksa utas serupa ini untuk lebih jelasnya.

1 AnkitPrasad Sep 29 2020 at 04:43

Saya pikir untuk sebagian besar apis Anda memiliki parameter kueri sebagai $top/$lewati. Anda dapat menggunakan parameter ini untuk melakukan pagination. Katakanlah proses default memberikan 200 dokumen sebagai respons. Untuk proses berikutnya, lewati 200 item tersebut dengan memberikan $ skip = 200 di parameter kueri permintaan untuk mendapatkan 200 item berikutnya. Anda dapat terus mengulang sampai atribut count dari respon menjadi 0.

Untuk aplikasi ini jika Anda tidak memiliki parameter ini, Anda dapat menggunakan token lanjutan seperti yang disebutkan oleh Leo Liu-MSFT.

BenHulan Nov 02 2020 at 22:12

Sepertinya Anda dapat menyampaikan $topdan continuationTokenmencantumkan Azure Git Ref.

Dokumentasinya ada di sini:

https://docs.microsoft.com/en-us/rest/api/azure/devops/git/refs/list?view=azure-devops-rest-6.0