API TFS 2018: доступ к рабочим элементам, но не к конечной точке API рабочего элемента - PullRequest
1 голос
/ 04 марта 2020

Я создал приложение промежуточного программного обеспечения, которое будет извлекать данные рабочих элементов из TFS.

Я смог сделать это с помощью конечной точки рабочих элементов.

http://sampleserver: 8080 / tfs / sampleproject / _apis / wit / wiql? api-version = 4.0 / workitems? ids = 1,2,3

Теперь мне также нужно получить ссылки на рабочие элементы для каждого рабочего элемента. Согласно документу, мне нужно было бы получить доступ к рабочему элементу с расширенными элементами. Но, к сожалению, конечная точка рабочего элемента, похоже, не работает.

http://sampleserver: 8080 / tfs / sampleproject / _apis / wit / wiql? Api-версия = 4.0 / workitem / 3

Я что-то здесь упускаю?

Ответы [ 2 ]

1 голос
/ 05 марта 2020

Согласно вашему описанию, вы просто хотите получить URL-адрес созданного WorkItem, чтобы любой, кто щелкнет по URL, создал рабочий элемент, был открыт.

https://tfsurl:8080/tfs/DefaultCollection/PatrickProject/_workitems/edit/172/

URL-адрес должен быть выше формата и здесь DefaultCollection - это имя коллекции, а PatrickProject - это имя проекта. Я использовал этот URL и в этом случае избавился от идентификатора 172 и использовал идентификатор вновь созданного рабочего элемента. Это вернет URL на go странице рабочего элемента HTML.

Так что это фиксированный формат, если у вас есть недавно созданный идентификатор WorkItem и имя коллекции, имя проекта, вам просто нужно следовать вышеуказанному формату и изменить последнее значение идентификатора рабочего элемента. Вот и все, игнорируйте, какой тип рабочего элемента вы создали.

Если вы хотите сделать это с кодом, не используйте Rest API, вам нужно использовать клиентский API, образец фрагмента:

var tfsURI = new Uri("http://test:8080/tfs");
var networkCredential1 = new NetworkCredential("test", "test!");

    ICredentials credential = (ICredentials)networkCredential1;
    Microsoft.VisualStudio.Services.Common.WindowsCredential winCred = new Microsoft.VisualStudio.Services.Common.WindowsCredential(credential);
    VssCredentials vssCredentials = new VssCredentials(winCred);

    using (TfsTeamProjectCollection collection = new TfsTeamProjectCollection(tfsURI, vssCredentials))
    {
        collection.EnsureAuthenticated();
        TswaClientHyperlinkService hyperlinkService = 
           collection.GetService<TswaClientHyperlinkService>();
        String TFSurl = hyperlinkService.GetWorkItemEditorUrl(17648).ToString(); //17648 WorkItem ID
    }

Надеюсь, это поможет!

0 голосов
/ 05 марта 2020

Чтобы получить конкретную c информацию о рабочем элементе, вам нужно использовать API-вызов Get Workitem , поэтому попробуйте http://sampleserver: 8080 / tfs / sampleproject / _apis / wit / workitems / 3? api-версия = 4.0 .

Вы также можете использовать это http://sampleserver: 8080 / tfs / sampleproject / _apis / wit / workitems / 3? $ Expand = Links & api-version = 4.0 , и это вернет работу с Идентификатор 3 и все его ссылки (родительские, вложенные файлы, набор изменений и т. Д. c.)

Обратите внимание, что api-версия = 4.0 изменяется в зависимости от используемой версии TFS / Service и должна всегда быть последней строкой в ​​вызове REST.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...