json - 从 powershell 执行 PATCH api 调用
问题描述
我正在尝试从 powershell 运行以下 API 'Patch' 命令,我希望在 Azure DevOps 中执行一个版本......
$deploy = Invoke-RestMethod -Uri $patchurl -Method Patch -Body $body -Headers $header -ContentType "application/json-patch+json"
网址示例如下
https://vsrm.dev.azure.com/test/Fixed%20Income/_apis/Release/releases/567/environments/1072?api-version=6.0-preview.6
补丁调用的主体是......
"Status": "inProgress",
"scheduledDeploymentTime": null,
"comment": null,
"variables": {}
从 powershell 运行调用命令会返回以下响应...
Invoke-RestMethod : {"$id":"1","innerException":null,"message":"TF400898:发生内部错误。活动 ID:759888ab-9828-4cb6-ba2f-e90cde1cd39a。","typeName" :"System.Web.Http.HttpResponseException, System.Web.Http","typeKey":"HttpResponseException","errorCode":0,"eventId":0}
当我运行相同的 url 来运行来自 Postman 的“补丁”请求时,我得到以下响应,这是我期望从 Powershell 得到的。
"$id": "1", "innerException": null, "message": "TF400813: 用户 '' 无权访问此资源。", "typeName": "Microsoft.TeamFoundation.Framework.Server.UnauthorizedRequestException ,Microsoft.TeamFoundation.Framework.Server”,“typeKey”:“UnauthorizedRequestException”,“errorCode”:0,“eventId”:3000
任何想法我做错了什么?
解决方案
根据您的描述,当您从 Postman 调用此REST API时,响应返回错误:“message”:“TF400813: The user” is not authorized to access this resource.” 这个问题的原因是授权不正确。
请先在组织中创建一个新的个人访问令牌,然后在授权选项卡中选择类型:基本身份验证,并在右侧的密码输入框中输入您的 PAT。
当您从 powershell 调用此 REST API 时,响应返回错误:“TF400898:发生内部错误。活动 ID:759888ab-9828-4cb6-ba2f-e90cde1cd39a。” 此问题的原因是 Content-Type 不正确。
请使用 ContentType " application/json " 而不是 ContentType "application/json-patch+json" 。
Script template:
$token = "PAT"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
$url3="https://vsrm.dev.azure.com/{organization}/{project}/_apis/Release/releases/{releaseId}/environments/{environmentId}?api-version=6.0-preview.6"
$body = "{
`"status`": `"inProgress`",
`"scheduledDeploymentTime`": null,
`"comment`": null,
`"variables`": {}
}"
$response3 = Invoke-RestMethod -Uri $url3 -Headers @{Authorization = "Basic $token"} -Method Patch -Body $body -ContentType application/json
请参考以下步骤来创建 PAT:
推荐阅读
- node.js - 从 Docker 连接到本地主机
- hyperledger-fabric - 如何在没有重启环境 cc:restart 的情况下调试对流链码?
- python-3.x - 谷歌云功能认证。获取身份令牌授权承载头 curl
- react-native - 在对齐间隔的 FlatList 中滑动时,如何检测将对齐到哪个项目?
- python - 设计带阻滤波器(在 SciPy firwin)
- python - 为什么我的列表按数字升序返回?
- python - 无法在 jupyter notebook 中使用 gcloud ml-engine(或 ai-platform)命令向 f1-micro 提交作业
- python - 使用二元交叉熵时输入和输出形状不匹配 | Keras tf 自动编码器
- python - LSTM X 值在预测上发生了变化?
- javascript - ReactJS 基于计时器为边框或圆圈设置动画