Azure-devops rest api - phân trang và giới hạn tỷ lệ

Sep 21 2020

Tôi đang cố gắng lấy dữ liệu các thực thể Azure-Devops (nhóm, dự án, kho lưu trữ, thành viên, v.v.) và xử lý cục bộ dữ liệu đó, tôi không thể tìm thấy bất kỳ tài liệu nào liên quan đến giới hạn tỷ lệ và phân trang, có ai có kinh nghiệm về điều đó không?

Có một số tài liệu để phân trang trên api thành viên:
https://docs.microsoft.com/en-us/rest/api/azure/devops/memberentitlementmanagement/members/get?view=azure-devops-rest-6.0

Nhưng đó là cái duy nhất, tôi không thể tìm thấy bất kỳ tài liệu nào cho bất kỳ thực thể git nào,
ví dụ: kho lưu trữ.
https://docs.microsoft.com/en-us/rest/api/azure/devops/git/repositories/list?view=azure-devops-rest-6.0

Nếu ai đó có thể chỉ cho tôi tài liệu phù hợp, Hoặc làm sáng tỏ những chủ đề này thì thật tuyệt.

Cảm ơn.

Trả lời

LeoLiu-MSFT Sep 22 2020 at 09:44

Tôi không thể tìm thấy bất kỳ tài liệu nào về giới hạn tỷ lệ và phân trang, có ai có kinh nghiệm về điều đó không?

Có một tài liệu về Giới hạn dịch vụ và giới hạn tỷ lệ , trong đó giới thiệu các giới hạn dịch vụ và giới hạn tỷ lệ mà tất cả các dự án và tổ chức phải tuân theo.

Đối với giới hạn Tỷ lệ:

Dịch vụ Azure DevOps, giống như nhiều giải pháp Phần mềm như một Dịch vụ, sử dụng nhiều hình thức thuê để giảm chi phí và tăng cường khả năng mở rộng và hiệu suất. Điều này khiến người dùng dễ bị các vấn đề về hiệu suất và thậm chí là ngừng hoạt động khi những người dùng khác sử dụng tài nguyên được chia sẻ của họ có mức tiêu thụ tăng đột biến. Để giải quyết những vấn đề này, Azure DevOps Services giới hạn tài nguyên mà các cá nhân có thể sử dụng và số lượng yêu cầu mà họ có thể thực hiện đối với các lệnh nhất định. Khi vượt quá các giới hạn này, các yêu cầu tiếp theo có thể bị trì hoãn hoặc bị chặn.

Bạn có thể tham khảo tài liệu Giới hạn tỷ lệ để biết thêm chi tiết

Đối với phân trang, nói chung, API REST sẽ có phản hồi được phân trang và API ADO REST thường có giới hạn 100/200 (tùy thuộc vào API nào) trên mỗi trang trong mỗi phản hồi. Cách để truy xuất thông tin trang tiếp theo là tham khảo tiêu đề phản hồi x-ms-continuationtokenvà sử dụng tiêu đề này cho tham số yêu cầu tiếp theo như continuationToken.

Nhưng Microsoft không ghi lại điều này tốt lắm - điều này nên được đề cập trong mọi lệnh gọi API hỗ trợ mã thông báo tiếp tục :

Công trình - Danh sách:

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

Nếu tôi sử dụng API REST ở trên với $top=50, như mong đợi, tôi nhận lại 50 và tiêu đề có tên " x-ms-continuationtoken", thì chúng tôi có thể lặp lại kết quả đầu ra với continuationtoken:

Bạn có thể kiểm tra chuỗi tương tự này để biết thêm chi tiết.

1 AnkitPrasad Sep 29 2020 at 04:43

Tôi nghĩ rằng đối với hầu hết các apis bạn có tham số truy vấn là $top/$Bạn có thể sử dụng tham số này để phân trang. Giả sử chạy mặc định cho 200 tài liệu trong phản hồi. Đối với lần chạy tiếp theo, hãy bỏ qua 200 mục đó bằng cách cung cấp $ bỏ qua = 200 trong tham số truy vấn của yêu cầu để nhận 200 mục tiếp theo. Bạn có thể tiếp tục lặp lại cho đến khi thuộc tính count của phản hồi trở thành 0.

Đối với những apis mà bạn không có thông số này, bạn có thể sử dụng mã thông báo tiếp tục như Leo Liu-MSFT đã đề cập.

BenHulan Nov 02 2020 at 22:12

Có vẻ như bạn có thể vượt qua $topvà continuationTokenliệt kê Azure Git Refs.

Tài liệu ở đây:

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