通过 Azure DevOps API 删除远程 Git 分支时出错:不支持的 HTTP 方法“POST”

问题描述 投票:0回答:1

我在尝试使用 Azure DevOps REST API 删除远程 Git 分支时遇到问题。尽管验证了权限并尝试了个人访问令牌 (PAT) 和承载令牌身份验证方法,但我始终收到一条错误,指示所请求的资源不支持 HTTP 方法“POST”。以下是我正在使用的详细代码片段以及其他上下文:

代码片段:

curl -X POST -u username:token -H "Content-Type: application/json" -d '{"refUpdates":[{"name":"refs/heads/{branchName}","oldObjectId":"{objectId}"}]}' "https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/pushes?api-version=6.0-preview.1"

错误信息:

{"count":1,"value":{"Message":"The requested resource does not support http method 'POST'."}}

其他详细信息:

  1. 尝试过的身份验证方法:我尝试了 PAT 和 Bearer token 身份验证方法来验证 API 调用。

  2. 权限已验证:我已验证用于身份验证的令牌具有完全访问权限。

  3. API 端点和版本:API 调用针对具有正确版本

    /_apis/git/repositories/{repositoryId}/pushes
    的适当端点
    api-version=6.0-preview.1

  4. 目标:我的目标是使用 Azure DevOps API 以编程方式删除远程 Git 分支。

我已彻底查看了 Azure DevOps API 文档并确保遵循正确的过程,但问题仍然存在。任何有关如何解决此问题的见解或建议将不胜感激。谢谢!

azure-devops azure-devops-rest-api
1个回答
0
投票

API“Pushes - Create”不能用于从 Azure Git Repos 删除分支,相反,您应该使用 API“Refs - Update Refs”。

下面是一个 Bash 脚本,用于使用 curl 命令调用相关 API 从 Azure Git Repos 删除分支。

#!/bin/bash

organization="{organization}"
project="{project}"
repository="{repository}"
branchName="{branchName}"  # e.g., refs/heads/develop
pat="{pat}"
uri="https://dev.azure.com/$organization/$project/_apis/git/repositories/$repository/refs?api-version=7.0"

# Get the objectId of the branch.
objectId=$(curl -X GET -u :$pat $uri | jq -r --arg branchName $branchName '.value[] | select(.name==$branchName) | .objectId')
echo "objectId = $objectId"

# Delete the branch.
curl -X POST -u :$pat $uri \
-H "Content-Type: application/json" \
-d "[
    {
        \"name\": \"$branchName\",
        \"newObjectId\": \"0000000000000000000000000000000000000000\",
        \"oldObjectId\": \"$objectId\"
    }
]"

© www.soinside.com 2019 - 2024. All rights reserved.