如何只更新正文请求中的一个字段?

时间:2019-08-05 10:01:39

标签: powershell azure-devops azure-pipelines-release-pipeline azure-devops-rest-api

我正在尝试使用提供Rest API documentation更新发布管道的说明。

我应该如何发送“放置”请求以更新字段?

我尝试使用嗅探器手动修改和捕获请求,看来我的代码完全一样。

$theBody = ConvertTo-Json @{description='Added a description'}


$instance = "tfs:8080"
$collection = "Collection"
$project = "myProject"
$releaseID = 1234
$apiVersion = "?api-version=4.1-preview.6"
$URI =  "http://"+$instance+"/"+$collection+"/"+$project+"/_apis/release/releases/"+$releaseID+$apiVersion


$res= Invoke-RestMethod -Method Put  -Uri $URI  -UseDefaultCredentials -Body $theBody  -ContentType 'application/json'
write-output $res

我收到一条错误消息:

  

发行版ID与原始发行版ID不匹配   资源。确保您尝试更新正确的资源

1 个答案:

答案 0 :(得分:2)

最好的方法是使用相同的URL,但使用Get方法(而不是正文)来发布:

$release = Invoke-RestMethod -Method Get-Uri $URI -UseDefaultCredentials -ContentType 'application/json'

然后修改说明:

$release.description = "Added a description"

将发行版转换为JSON:

$theBody = $release | ConvertTo-Json -Depth 10

然后执行Put

$res = Invoke-RestMethod -Method Put -Uri $URI -UseDefaultCredentials -Body $theBody  -ContentType 'application/json'