GitHub REST API获取仓库自定义属性返回空数组问题排查
问题排查与解决方法
首先得明确你可能混淆了两个核心概念:
- 仓库自定义属性:是仓库级别的键值配置,在仓库的「Settings -> Code and automation -> Custom properties」里设置,对应你调用的
/repos/OWNER/REPO/properties/values接口 - GitHub Projects自定义字段:是项目板(Project)里的字段,比如状态、迭代这类,属于项目资源,和仓库属性不是一回事,你用GraphQL能拿到的大概率是这个
分情况解决:
情况1:你把项目字段当成了仓库自定义属性
如果你的自定义字段是在GitHub Projects里设置的,那用仓库属性的REST接口肯定拿不到,得用项目相关的REST接口:
- 经典项目(Projects v1):调用
GET /projects/{owner}/{project}/fields - 新版项目(Projects v2):调用
GET /orgs/{owner}/projects/{project_number}/fields(组织项目)或GET /users/{owner}/projects/{project_number}/fields(个人项目)
情况2:确实是仓库自定义属性但返回空数组
按以下步骤逐一排查:
- 确认仓库真的配置了属性:去仓库的「Settings -> Custom properties」页面,检查有没有添加属性,并且是否给仓库设置了对应的值(空键但未设值的话,接口可能返回空数组)
- 核对令牌权限:
- 私有仓库:令牌必须有
repo权限 - 公有仓库:令牌需要
public_repo权限 - 如果是组织级令牌,要确保该令牌被授权访问目标仓库(在组织的「Settings -> Personal access tokens」里检查仓库权限)
- 私有仓库:令牌必须有
- 检查请求参数:确认
OWNER和REPO的拼写完全正确,包括组织/用户名的大小写(虽然GitHub不严格区分,但避免踩坑) - 直接用curl测试:排除代码逻辑问题,执行以下命令:
curl -H "Authorization: token YOUR_GITHUB_TOKEN" https://api.github.com/repos/OWNER/REPO/properties/values - 排除API缓存:GitHub API偶尔会有缓存,等5-10分钟再试,或者换一个新生成的令牌测试
内容的提问来源于stack exchange,提问作者El Anonimo
相关产品推荐
相关产品推荐

