TFS 2018 API:可以访问工作项但不能访问工作项 API 端点

TFS 2018 API: Can access workitems but not workitem API end point

我创建了一个中间件应用程序,它将从 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-version=4.0/workitem/3

我是不是遗漏了什么?

根据您的描述,您似乎只想要 URL 创建的工作项,这样任何人在单击 URL 时,创建的工作项都会打开。

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

URL 应该是上述格式,这里的 DefaultCollection 是集合名称,PatrickProject 是项目名称。在这种情况下,我使用了这个 url 并去掉了 id '172' 并使用了新创建的工作项的 ID。这将 return URL 转到工作项 HTML 页面。

所以这是一个固定的格式,如果你有新创建的WorkItem ID和集合名称,项目名称,你只需要按照上面的格式并更改工作项ID的最后一个值。就是这样,忽略您创建的工作项类型。

如果您想使用代码执行此操作,请不要使用 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
    }

希望对您有所帮助!

要获取特定的工作项信息,您需要改用 Get Workitem API call so try http://sampleserver:8080/tfs/sampleproject/_apis/wit/workitems/3?api-version=4.0

您也可以使用此 http://sampleserver:8080/tfs/sampleproject/_apis/wit/workitems/3?$expand=Links&api-version=4.0,这将 return Id 为 3 的工作及其所有链接(父文件、附加文件、变更集等)

请注意,api-version=4.0 会根据您使用的 TFS/Service 版本而变化,并且应该始终是 REST 调用中的最后一个字符串。