如何获取GitHub仓库中所有文件的download_url?
获取GitHub仓库所有文件的download_url的方法
方法一:手动拼接固定格式的download_url
GitHub的文件raw下载链接(即download_url)有统一格式,你可以用递归tree接口拿到所有文件路径后直接拼接:
- 首先执行递归tree命令获取所有文件的路径(注意修改Accept头为
application/vnd.github.v3.json,确保返回可解析的JSON结构):
curl -H "Authorization: token ghp_..." -H "Accept: application/vnd.github.v3.json" -L "https://api.github.com/repos/<USER>/<REPO>/git/trees/main?recursive=1"
- 从返回结果中筛选出
type为blob的条目,提取它们的path字段。 - 按照以下格式拼接download_url:
https://raw.githubusercontent.com/<USER>/<REPO>/<BRANCH>/<FILE_PATH>
比如文件路径是src/utils.js,分支是main,那么download_url就是:https://raw.githubusercontent.com/<USER>/<REPO>/main/src/utils.js
方法二:通过Contents API批量请求单个文件的download_url
如果需要保留GitHub API返回的文件元数据(比如大小、SHA值),可以先拿到所有文件路径,再逐个调用Contents接口:
- 同样先执行递归tree命令获取所有文件路径(步骤同方法一)。
- 对每个文件路径
<FILE_PATH>,执行以下命令获取包含download_url的详细信息:
curl -H "Authorization: token ghp_..." -H "Accept: application/vnd.github.v3.json" -L "https://api.github.com/repos/<USER>/<REPO>/contents/<FILE_PATH>?ref=main"
返回的JSON结构中直接包含download_url字段。
注意:此方法如果仓库文件数量较多,需要留意GitHub API的速率限制,避免触发请求限制。
内容的提问来源于stack exchange,提问作者Jabu
相关产品推荐
相关产品推荐

