TFS API - WIQL - запрос возвращает только id и url

Я пытаюсь выполнить WIQL-запрос на сервере TFS (следуя этому примеру) и получить рабочие элементы с полями tittle и другими. Несмотря на то, что я определяю нужные столбцы на выходе, json возвращает только с id и url.

запрос

 Select [System.Title],
    [System.Description],
    [System.WorkItemType],[System.Id]
    From WorkItems 
    Where [System.WorkItemType] = 'Task' 
       AND [State] <> 'Closed' 
       AND [State] <> 'Removed' 
      AND [System.AssignedTo] = @me 
    order by [Microsoft.VSTS.Common.Priority] asc, [System.CreatedDate] desc

Джсон вернулся

{"queryType":"flat","queryResultType":"workItem","asOf":"2016-03-18T22:53:15.777Z","columns":[{"referenceName":"System.Title","name":"Title","url":"http://<my tfs server>/tfs/DefaultCollection/_apis/wit/fields/System.Title"},{"referenceName":"System.Description","name":"Description","url":"http://<my tfs server>/tfs/DefaultCollection/_apis/wit/fields/System.Description"},{"referenceName":"System.WorkItemType","name":"Work Item Type","url":"http://<my tfs server>/tfs/DefaultCollection/_apis/wit/fields/System.WorkItemType"},{"referenceName":"System.Id","name":"ID","url":"http://<my tfs server>/tfs/DefaultCollection/_apis/wit/fields/System.Id"}],"sortColumns":[{"field":{"referenceName":"Microsoft.VSTS.Common.Priority","name":"Priority","url":"http://<my tfs server>/tfs/DefaultCollection/_apis/wit/fields/Microsoft.VSTS.Common.Priority"},"descending":false},{"field":{"referenceName":"System.CreatedDate","name":"Created Date","url":"http://<my tfs server>/tfs/DefaultCollection/_apis/wit/fields/System.CreatedDate"},"descending":true}],"workItems":[{"id":6760,"url":"http://<my tfs server>/tfs/DefaultCollection/_apis/wit/workItems/6760"},{"id":6734,"url":"http://<my tfs server>/tfs/DefaultCollection/_apis/wit/workItems/6734"},{"id":6731,"url":"http://<my tfs server>/tfs/DefaultCollection/_apis/wit/workItems/6731"},{"id":6526,"url":"http://<my tfs server>/tfs/DefaultCollection/_apis/wit/workItems/6526"},{"id":6525,"url":"http://<my tfs server>/tfs/DefaultCollection/_apis/wit/workItems/6525"},{"id":6524,"url":"http://<my tfs server>/tfs/DefaultCollection/_apis/wit/workItems/6524"},{"id":6514,"url":"http://<my tfs server>/tfs/DefaultCollection/_apis/wit/workItems/6514"},{"id":6372,"url":"http://<my tfs server>/tfs/DefaultCollection/_apis/wit/workItems/6372"},{"id":6371,"url":"http://<my tfs server>/tfs/DefaultCollection/_apis/wit/workItems/6371"},{"id":6235,"url":"http://<my tfs server>/tfs/DefaultCollection/_apis/wit/workItems/6235"},{"id":6218,"url":"http://<my tfs server>/tfs/DefaultCollection/_apis/wit/workItems/6218"},{"id":6123,"url":"http://<my tfs server>/tfs/DefaultCollection/_apis/wit/workItems/6123"},{"id":6122,"url":"http://<my tfs server>/tfs/DefaultCollection/_apis/wit/workItems/6122"},{"id":6121,"url":"http://<my tfs server>/tfs/DefaultCollection/_apis/wit/workItems/6121"},{"id":6120,"url":"http://<my tfs server>/tfs/DefaultCollection/_apis/wit/workItems/6120"}]}

Есть ли какой-либо флаг, который я должен передать запросу, чтобы я мог получить эти поля на выходе?

1 ответ

Решение

Вопрос, из того, что я могу сказать по номиналу, основан на первом примере POST, представленном на странице документации, на которую вы ссылались.

Глядя на содержимое вашего результата json, вы увидите следующий массив json:

"workItems":[
{"id":7331, 
"url":"https://<hostname>/tfs/<collection>/_apis/wit/workItems/7331"}, ... etc.

При прочтении на странице документации упоминается следующее:

"После выполнения запроса получите рабочие элементы, используя идентификаторы, которые возвращаются в ответе на результаты запроса. Вы можете получить до 200 рабочих элементов одновременно".

Это означает, что запрос состоит из двух этапов

1. получить список идентификаторов рабочих элементов при первом вызове.

2. получить дополнительные сведения о рабочих элементах, возвращенных при первом вызове API, путем выполнения дополнительных вызовов.

Причина ограничения в 200 рабочих элементов имеет смысл, если бы не было такого ограничения, на скорость отклика службы оказывалось бы отрицательное влияние.

Затем в документации продолжается предоставление краткого примера получения данных для каждого из идентификаторов рабочих элементов, возвращаемых (в массиве workItems) из первого вызова API.

Приведенный нижепример (из того же документа), обратите внимание, что идентификаторы, возвращенные в первом запросе, будут использоваться в этом запросе:

GET: https://fabrikam.visualstudio.com/DefaultCollection/_apis/wit/WorkItems?ids=300,299,298,17,16,15,14,9,8&fields=System.Id,System.Title,System.State&asOf=2014-12-29T20:49:34.617Z&api-version=1.0

Итог: на данный момент нет флага, который заставляет API возвращать все рабочие элементы, полученные в результате начального запроса.

Другие вопросы по тегам