如何使用GitHub API列出指定仓库目录下的所有文件名?
GitHub仓库指定目录文件名查询方案
方案1:使用官方Contents API(优先推荐)
GitHub原生提供了直接查询指定路径内容的接口,无需拉取全量仓库目录结构,请求格式如下:https://api.github.com/repos/{用户名}/{仓库名}/contents/{目标目录相对路径}?ref={分支名}
- 参数替换示例:要查询
master分支下src/utils目录的内容,请求为:https://api.github.com/repos/yourname/yourrepo/contents/src/utils?ref=master - 返回结果中
type为file的项即为目录下的文件,name字段对应文件名,type为dir的是子目录。 - 若目录下内容超过1000条,可搭配
page和per_page参数分页拉取。
方案2:基于现有全量树API本地过滤
如果你需要沿用你提到的递归拉取全量目录树的API,可通过本地过滤得到目标目录内容,操作步骤如下:
- 调用
https://api.github.com/repos/username/repo-name/git/trees/master?recursive=1获取仓库全量目录树 - 对返回的
tree数组按目标目录前缀做过滤,排除深层嵌套的子目录内容即可
JS过滤参考代码:
// 替换为你的目标目录,末尾不要加斜杠 const targetDir = 'src/utils' const targetPathLevel = targetDir.split('/').length const targetDirContent = allTree.tree.filter(item => { const pathSegments = item.path.split('/') // 匹配前缀+层级等于目标目录下一级 return pathSegments.slice(0, targetPathLevel).join('/') === targetDir && pathSegments.length === targetPathLevel + 1 })
通用注意事项
- 私有仓库请求时需要在请求头中携带个人访问令牌:
Authorization: token 你的PAT - 目录路径大小写敏感,需要和仓库内实际路径完全一致
内容的提问来源于stack exchange,提问作者zeromsi
相关产品推荐
相关产品推荐

