API Reste Azure-devops - pagination et limite de débit
J'essaie d'extraire des données d'entités Azure-Devops (équipes, projets, référentiels, membres, etc.) et de traiter ces données localement, je ne trouve aucune documentation concernant la limitation de débit et la pagination, est-ce que quelqu'un a une expérience avec cela?
Il existe de la documentation pour la pagination sur l'API des membres:
https://docs.microsoft.com/en-us/rest/api/azure/devops/memberentitlementmanagement/members/get?view=azure-devops-rest-6.0
Mais c'est le seul, je n'ai trouvé aucune documentation pour aucune des entités git,
par exemple: repositories.
https://docs.microsoft.com/en-us/rest/api/azure/devops/git/repositories/list?view=azure-devops-rest-6.0
Si quelqu'un pouvait me diriger vers la bonne documentation, ou faire la lumière sur ces sujets, ce serait formidable.
Merci.
Réponses
Je ne trouve aucune documentation concernant la limitation de débit et la pagination, est-ce que quelqu'un a une expérience avec cela?
Il existe un document sur les limites de service et les limites de taux , qui a introduit des limites de service et des limites de taux auxquelles tous les projets et organisations sont soumis.
Pour la limitation de débit:
Les services Azure DevOps, comme de nombreuses solutions Software-as-a-Service, utilisent la multi-location pour réduire les coûts et améliorer l'évolutivité et les performances. Cela rend les utilisateurs vulnérables aux problèmes de performances et même aux pannes lorsque d'autres utilisateurs de leurs ressources partagées ont des pics de consommation. Pour lutter contre ces problèmes, Azure DevOps Services limite les ressources que les individus peuvent consommer et le nombre de requêtes qu'ils peuvent adresser à certaines commandes. Lorsque ces limites sont dépassées, les demandes suivantes peuvent être retardées ou bloquées.
Vous pouvez consulter la documentation des limites de taux pour plus de détails
Pour la pagination, généralement, l'API REST aura une réponse paginée et l'API REST ADO a normalement des limites de 100/200 (en fonction de l'API) par page dans chaque réponse. La façon de récupérer les informations de la page suivante consiste à faire référence à l'en-tête de réponse x-ms-continuationtokenet à l'utiliser pour le paramètre de demande suivant comme continuationToken.
Mais Microsoft ne le documente pas très bien - cela aurait dû être mentionné dans chaque appel d'API prenant en charge les jetons de continuation :
Constructions - Liste:
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
Si j'utilise l'API REST ci-dessus avec $top=50, comme prévu, j'en récupère 50 et un en-tête appelé " x-ms-continuationtoken", alors nous pourrions afficher le résultat en boucle avec continuationtoken:
Vous pouvez consulter ce fil similaire pour plus de détails.
Je pense que pour la plupart des API, vous avez un paramètre de requête comme $top/$skip Vous pouvez utiliser ces paramètres pour effectuer la pagination. Disons que l'exécution par défaut donne 200 documents dans la réponse. Pour la prochaine exécution, ignorez ces 200 en fournissant $ skip = 200 dans le paramètre de requête de la requête pour obtenir les 200 éléments suivants. Vous pouvez continuer à itérer jusqu'à ce que l'attribut count de la réponse devienne 0.
Pour ces API si vous n'avez pas ces paramètres, vous pouvez utiliser le jeton de continuation comme mentionné par Leo Liu-MSFT.
Il semble que vous puissiez passer $topet continuationTokenrépertorier les références Azure Git.
La documentation est ici:
https://docs.microsoft.com/en-us/rest/api/azure/devops/git/refs/list?view=azure-devops-rest-6.0