【问题标题】:How to set a work item state while creating or updating work item in Azure Devops Rest API?在 Azure Devops Rest API 中创建或更新工作项时如何设置工作项状态?
【发布时间】:2021-02-03 01:00:40
【问题描述】:

我一直在努力创建一个 API,它以编程方式在 Azure Devops 中创建/更新工作项。我已经能够创建一个工作项并填充几乎所有字段。我在设置状态时遇到问题。

当我使用“Active”、“Closed”、“Rejected”等任何状态名称向 Azure Devops rest api 创建 POST 请求时,它会引发 400 Bad Request 错误。

我不知道我是否遗漏了什么,或者我尝试设置值的方式是否有问题。

{
  "op" : "add", 
  "path": "/fields/System.State", 
  "value"="Active",
}

【问题讨论】:

    标签: azure-devops-rest-api workitem


    【解决方案1】:

    我已经找到了解决这个问题的方法,因此我在这里回答。

    每当我尝试在同一个调用中创建项目并设置状态时,都会收到 400 Bad Request 错误。我调试了代码并捕获了异常。我发现,有些字段有一些验证规则。状态就是其中之一。

    System.State 字段的规则是,每当创建工作项时,它都会采用其配置的默认值。 (在我的情况下它是“提议的”,在你的情况下它可能是“新的”)。如果您尝试在创建工作项时更改该值,则会引发 400 Bad Request。

    如果我必须创建具有特定状态的工作项该怎么办?

    到目前为止,我发现的解决方案是打两个电话。一个用于创建工作项,另一个用于将工作项的状态更改为所需状态。

    CreateWorkItem()
    {
     var result = await _client.Post(url, jsonData);
     var result2 = await _client.Put(result.id, jsonData); // or maybe just the state
     return Ok(result2);
    }
    

    【讨论】:

      【解决方案2】:

      在此处查看示例:Update a field

      您必须在请求正文中使用"value":"Active"

      [
        {
            "op" : "add", 
            "path": "/fields/System.State", 
            "value": "Active"
         }
      ]
      

      【讨论】:

      • 我正在使用同样的东西。显然,问题仅在于创建,对于任何更新操作,这都可以正常工作。
      • 没有关于如何在请求正文中使用 "value":"Active" 的解释或示例代码,因此被否决
      猜你喜欢
      • 2021-05-30
      • 2021-03-19
      • 2020-03-03
      • 1970-01-01
      • 2021-02-22
      • 2020-07-26
      • 1970-01-01
      • 2020-07-06
      • 1970-01-01
      相关资源
      最近更新 更多