Azure-devops rest api - paginação e limite de taxa

Sep 21 2020

Estou tentando obter dados de entidades do Azure-Devops (equipes, projetos, repositórios, membros etc ...) e processar esses dados localmente, não consigo encontrar nenhuma documentação sobre limitação de taxa e paginação. Alguém tem alguma experiência com isso?

Há alguma documentação para paginação na API de membros:
https://docs.microsoft.com/en-us/rest/api/azure/devops/memberentitlementmanagement/members/get?view=azure-devops-rest-6.0

Mas esse é o único, não consegui encontrar nenhuma documentação para nenhuma das entidades git,
por exemplo: repositórios.
https://docs.microsoft.com/en-us/rest/api/azure/devops/git/repositories/list?view=azure-devops-rest-6.0

Se alguém pudesse me indicar a documentação certa, ou lançar alguma luz sobre esses assuntos, seria ótimo.

Obrigado.

Respostas

LeoLiu-MSFT Sep 22 2020 at 09:44

Não consigo encontrar nenhuma documentação sobre limitação de taxa e paginação, alguém tem alguma experiência com isso?

Há um documento sobre limites de serviço e limites de taxa , que introduziu limites de serviço e limites de taxa aos quais todos os projetos e organizações estão sujeitos.

Para a limitação da taxa:

O Azure DevOps Services, como muitas soluções de software como serviço, usa multilocação para reduzir custos e aprimorar a escalabilidade e o desempenho. Isso deixa os usuários vulneráveis ​​a problemas de desempenho e até mesmo interrupções quando outros usuários de seus recursos compartilhados apresentam picos de consumo. Para combater esses problemas, o Azure DevOps Services limita os recursos que os indivíduos podem consumir e o número de solicitações que podem fazer a determinados comandos. Quando esses limites são excedidos, as solicitações subsequentes podem ser atrasadas ou bloqueadas.

Você pode consultar a documentação de limites de taxa para obter detalhes

Para a paginação, geralmente, a API REST terá uma resposta paginada e a API REST ADO normalmente terá limites de 100/200 (dependendo de qual API) por página em cada resposta. A maneira de recuperar as informações da próxima página é consultar o cabeçalho da resposta x-ms-continuationtokene usá-lo para o próximo parâmetro de solicitação como continuationToken.

Mas a Microsoft não documenta isso muito bem - isso deveria ter sido mencionado em todas as chamadas de API que suportam tokens de continuação :

Builds - Lista :

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

Se eu usar a API REST acima com $top=50, como esperado, obtenho 50 de volta e um cabeçalho chamado " x-ms-continuationtoken", então podemos fazer um loop de saída do resultado com continuationtoken:

Você pode verificar este tópico semelhante para mais detalhes.

1 AnkitPrasad Sep 29 2020 at 04:43

Acho que para a maioria das apis você tem um parâmetro de consulta como $top/$skip. Você pode usar esses parâmetros para fazer a paginação. Digamos que a execução padrão forneça 200 documentos na resposta. Para a próxima execução, pule aqueles 200 fornecendo $ skip = 200 no parâmetro de consulta da solicitação para obter os próximos 200 itens. Você pode continuar iterando até que o atributo de contagem da resposta se torne 0.

Para aquelas apis onde você não tem esses parâmetros, você pode usar o token de continuação conforme mencionado por Leo Liu-MSFT.

BenHulan Nov 02 2020 at 22:12

Parece que você pode passar $tope continuationTokenlistar Azure Git Refs.

A documentação está aqui:

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