Рассмотрим API GetCommits . Он имеет необязательный параметр searchCriteria.ids
, который представляет собой список идентификаторов коммитов.
Но как пройти этот список? Например, у меня есть 2 коммита A и B. Я попробовал:
- A, B
- A B
- [A, B]
Ответ, который я получаю:
An object ID must be 40 characters long and only have hex digits. Passed in object ID: 0533232917cc37fb743d282c467eb41bafac15ee,063a6805640221285db15f75c3b3ca6f3fe619c
Я получаю одинаковый ответ для всех трех вариантов - отличается только идентификатор объекта, о котором сообщается.
Итак, как передать массив в REST Api Azure Devops в GET-запросе?
Я использую PowerShell. Утверждение просто Invoke-RestMethod -UseDefaultCredentials -Uri $Url
Вариант 1 - используйте запятую
http://tfsserver:8080/tfs/defaultcollection/code/_apis/git/repositories/xyz/commits?api-version=4.1&searchCriteria.ids=0533232917cc37fb743d282c467eb41bafac15ee,063a6805640221285db15f75c3b3ca6f3fe619c0
Результаты в
{"$id":"1","innerException":null,"message":"An object ID must be 40 characters long and only have hex digits. Passed in object ID: 0533232917cc37fb743d282c467eb41bafac15ee,063a6805640221285db15f75c3b3ca6f3fe619c0.","typeName":"System.ArgumentException, mscorlib","typeKey":"ArgumentException","errorCode":0,"eventId":0}
Вариант 2 - использовать пробел
http://tfsserver:8080/tfs/defaultcollection/code/_apis/git/repositories/xyz/commits?api-version=4.1&searchCriteria.ids=0533232917cc37fb743d282c467eb41bafac15ee%20063a6805640221285db15f75c3b3ca6f3fe619c0
Результат с той же ошибкой.
Вариант 3 - использовать массив JavaScript [,]
http://tfsserver:8080/tfs/defaultcollection/code/_apis/git/repositories/xyz/commits?api-version=4.1&searchCriteria.ids=[0533232917cc37fb743d282c467eb41bafac15ee,063a6805640221285db15f75c3b3ca6f3fe619c0]
Та же ошибка.
Это работает, когда я просто передаю один коммит без каких-либо дополнительных символов.
Использование в вместо =
Есть предложение использовать «in» вместо «=». Это принимает запятую, но, похоже, не работает правильно. Пожалуйста, соблюдайте:
Итак, использование '=' дает один коммит - как и ожидалось. Но использование «в» дает 100? Я попытался передать два коммита, разделенных запятой, и это не дает сбоя, но также возвращает 100 коммитов. Это неправильно.