【问题标题】:Efficient way to query work items updates via Visual Studio Team Service REST API通过 Visual Studio Team Service REST API 查询工作项更新的有效方法
【发布时间】:2023-03-13 01:55:01
【问题描述】:

我想查询错误的状态何时更改为“活动”以进行报告,并通过阅读 Visual Studio 文档成功检索到所需的结果。

  1. 通过Work item query language 获取我感兴趣的所有工作项ID。我要查询一年的数据,所以有很多。
  2. 使用 for 循环为每个 id 调用 updates API
  3. 解析更新 API 结果以查找 System.State 字段。

问题在于第 2 步太,因为更新 API 每个请求只接受一个 id。 有没有办法批量获取工作项的更新?如果我们可以限制更新 API 中的字段以简化第 3 步,那就更好了。

【问题讨论】:

    标签: azure-devops azure-devops-rest-api


    【解决方案1】:

    主要是step1返回当前项目和其他项目的工作项

    您可以将以下 REST API 用于第 1 步:

    POST https://account.visualstudio.com/DefaultCollection/_apis/wit/wiql?api-version=1.0
    

    内容类型:application/json

    {
      "query": 
      "Select [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State] 
      From WorkItems 
      Where [System.WorkItemType] = 'Bug' AND [State] = 'Active'"
    }
    

    然后它将返回所有团队项目中状态为 Active 的 Bug。

    你只需要添加一个条件在where子句中指定当前团队项目

    • 如果团队项目WIT只有一个Area(无子Areas)且名称与团队项目名称相同,则可以将REST API用作:

      POST https://account.visualstudio.com/DefaultCollection/_apis/wit/wiql?api-version=1.0
      

      内容类型:application/json

      {
        "query": 
        "Select [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State] 
        From WorkItems 
        Where [System.WorkItemType] = 'Bug' AND [State] = 'Active' AND [System.AreaPath] = 'projectname'"
      

      }

    • 如果团队项目WIT有多个Areas(如Areas为:projectnameprojectname\child1projectname\child2),可以使用下面的REST API:

      POST https://account.visualstudio.com/DefaultCollection/_apis/wit/wiql?api-version=1.0
      

      内容类型:application/json

      {
        "query": 
        "Select [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State] 
        From WorkItems 
        Where [System.WorkItemType] = 'Bug' AND [State] = 'Active' AND [System.AreaPath] IN ('projectname', 'projectname\\child1', 'projectname\\child2)"
      }
      

    那么step2会更快更高效。

    【讨论】:

    • 感谢您的回复,但由于我正在查询一年的数据,因此预计会有很大的错误数量。它与项目或区域路径无关,因为我已针对 VSTS 网站中的查询编辑器手动验证了结果。
    • 如果您使用的是我列出的第一个应用程序/json 示例。它确实包含其他项目中的工作项。而如果你已经确认了某个项目的所有返回的工作项,那么step2太慢的原因可能会导致工作项的数量很大。
    猜你喜欢
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-11
    • 2022-01-22
    • 2017-12-14
    • 2017-08-03
    相关资源
    最近更新 更多