如何在 Azure Devops Rest API 中创建或更新工作项时设置工作项状态?

How to set a work item state while creating or updating work item in Azure Devops Rest API?

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

当我创建一个 POST 到 Azure Devops rest api 的请求时,它会抛出一个 400 Bad Request 错误。

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

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

在此处检查示例:Update a field

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

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

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

每当我尝试在同一个调用中创建项目和设置状态时,我都会收到 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);
}