如何获取REST API响应头ETag值并传入Azure CLI更新Azure DevOps Wiki
操作步骤
1. 调用Azure DevOps REST API获取ETag
Wiki页面对应的GET API会在响应头中返回ETag值,API请求格式如下:GET https://dev.azure.com/{组织名}/{项目名}/_apis/wiki/wikis/{Wiki标识符}/pages?path={页面路径}&api-version=7.1-preview.1
请求需要携带拥有Wiki读取权限的个人访问令牌(PAT)进行鉴权。
2. 脚本中提取ETag值
Bash 脚本示例:
# 替换为实际配置参数 ORG_NAME="你的组织名称" PROJECT_NAME="你的项目名称" WIKI_ID="你的Wiki标识符" PAGE_PATH="/示例页面路径" PAT="你的个人访问令牌" # 发送请求提取ETag,自动去除首尾双引号 ETAG=$(curl -s -D - -u :$PAT "https://dev.azure.com/$ORG_NAME/$PROJECT_NAME/_apis/wiki/wikis/$WIKI_ID/pages?path=$PAGE_PATH&api-version=7.1-preview.1" | grep -i '^ETag:' | awk '{print $2}' | tr -d '"')
PowerShell 脚本示例:
# 替换为实际配置参数 $orgName = "你的组织名称" $projectName = "你的项目名称" $wikiId = "你的Wiki标识符" $pagePath = "/示例页面路径" $pat = "你的个人访问令牌" $base64Auth = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$pat")) # 发送请求提取ETag,自动去除首尾双引号 $response = Invoke-WebRequest -Uri "https://dev.azure.com/$orgName/$projectName/_apis/wiki/wikis/$wikiId/pages?path=$pagePath&api-version=7.1-preview.1" -Headers @{Authorization = "Basic $base64Auth"} $etag = $response.Headers.ETag.Trim('"')
3. 传入ETag执行更新命令
Bash 示例:
az devops wiki page update \ --organization "https://dev.azure.com/$ORG_NAME" \ --project "$PROJECT_NAME" \ --wiki "$WIKI_ID" \ --path "$PAGE_PATH" \ --version "$ETAG" \ --content "你的新页面内容"
PowerShell 示例:
az devops wiki page update ` --organization "https://dev.azure.com/$orgName" ` --project "$projectName" ` --wiki "$wikiId" ` --path "$pagePath" ` --version "$etag" ` --content "你的新页面内容"
注意事项
- 个人访问令牌需要同时拥有Wiki读取和Wiki写入权限,才能完成ETag获取和页面更新操作。
- 每次更新页面之前必须重新获取最新ETag,页面内容变更后ETag会同步刷新,使用旧ETag会触发冲突报错。
- 若页面路径包含空格、特殊字符,需要先做URL编码后再传入API请求,否则会返回404错误。
- 执行Azure CLI命令前需提前完成认证,可通过
az login登录Azure账号,或az devops login传入PAT完成DevOps服务认证。
内容的提问来源于stack exchange,提问作者hitman126
相关产品推荐
相关产品推荐

