You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:通过API创建Azure DevOps项目Wiki页面时遇HTTP 404错误

解决Azure DevOps REST API创建Wiki页面404错误的方案

问题核心分析

你遇到的404错误提示找不到非当前项目的Git仓库,本质是Wiki标识符匹配错误,加上可能的权限或URL格式问题导致的。以下是针对性的解决步骤:


1. 确认Wiki的正确标识符

项目Wiki的Git仓库名称可能因项目名称含空格/特殊字符而自动修改(比如项目名My Project对应的Wiki仓库名可能是MyProject.wiki而非My Project.wiki),直接用${project}.wiki拼接会导致匹配失败。

验证方法:

先调用API获取项目内所有Wiki的详细信息,确认目标Wiki的id或正确name:

curl -s -H "Authorization: Bearer $SYSTEM_ACCESSTOKEN" \
  "${SystemURI%/}/$project/_apis/wiki/wikis?api-version=7.1"

返回结果中找到目标Wiki的id(GUID格式)和name,后续用id代替名称可避免格式问题。


2. 修正API请求URL

关键调整:

  • 用Wiki的id替代拼接的名称,避免命名格式错误
  • 处理SystemURI结尾的斜杠,防止URL出现重复//
  • 确保api-version与Azure DevOps版本兼容(7.1是稳定版本)

修正后的URL拼接代码:

# 从Wiki列表中提取ID(假设项目只有一个Wiki,多Wiki需调整索引)
wiki_list=$(curl -s -H "Authorization: Bearer $SYSTEM_ACCESSTOKEN" \
  "${SystemURI%/}/$project/_apis/wiki/wikis?api-version=$API_VERSION")
wiki_id=$(echo "$wiki_list" | jq -r '.value[0].id')

# 构建正确的请求URL
url="${SystemURI%/}/$project/_apis/wiki/wikis/$wiki_id/pages?path=my_page&api-version=$API_VERSION"

3. 确保权限配置正确

  • 管道设置:在代理作业的"附加选项"中,勾选允许脚本访问OAuth令牌,否则$SYSTEM_ACCESSTOKEN无足够权限访问Wiki对应的Git仓库。
  • Git仓库权限:确认构建服务账户(格式:{组织名} Build Service ({项目名}))拥有Wiki对应Git仓库的Contributor权限(项目级Contributor权限可能未覆盖Git仓库的细粒度权限)。

4. 修正后的完整Bash脚本

#!/bin/bash
set -e

API_VERSION=7.1
project=$(System.TeamProject)

# 安装jq用于解析JSON(若管道环境未预装)
sudo apt-get update && sudo apt-get install -y jq

# 获取Wiki列表并提取目标Wiki的ID
wiki_list=$(curl -s -H "Authorization: Bearer $SYSTEM_ACCESSTOKEN" \
  "${SystemURI%/}/$project/_apis/wiki/wikis?api-version=$API_VERSION")
wiki_id=$(echo "$wiki_list" | jq -r '.value[0].id')

# 构建正确的请求URL
url="${SystemURI%/}/$project/_apis/wiki/wikis/$wiki_id/pages?path=my_page&api-version=$API_VERSION"
echo "Request URL: $url"

# 准备请求内容
updateContent='{"content":"Foo Bar"}'

# 发送PUT请求创建页面
response=$(curl -s -X PUT \
  -H "Authorization: Bearer $SYSTEM_ACCESSTOKEN" \
  -H "Content-Type: application/json" \
  --data "$updateContent" \
  "$url")

echo "Response: $response"

内容的提问来源于stack exchange,提问作者Mislav Cosic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 12:10:55