如何使用GitHub API获取软件包的最新版本?
使用GitHub API获取GitHub Packages最新版本的方法
GitHub API目前没有直接返回软件包最新版本的端点,你需要通过以下步骤手动筛选并下载:
第一步:拉取目标软件包的所有版本列表
根据你的包所属的组织或个人账号,调用对应的版本列表API:- 组织名下的包:
GET /orgs/{org}/packages/{package_type}/{package_name}/versions - 个人名下的包:
GET /users/{username}/packages/{package_type}/{package_name}/versions
替换参数说明: {org}/{username}:包所属的组织名或用户名{package_type}:包的类型,你的JAR/WAR属于maven类型{package_name}:你的软件包名称
请求时需要带上拥有read:packages权限的GitHub令牌,放在请求头Authorization: token YOUR_TOKEN里。
- 组织名下的包:
第二步:筛选出最新版本
API返回的版本数组里,每个版本对象包含created_at(版本创建时间)和name(版本号)字段,你可以通过两种方式筛选:- 按创建时间排序:直接取
created_at值最晚的版本,这是最直接的方式,无需解析版本号 - 按语义化版本号排序:如果你的版本遵循语义化规则(如
1.3.2),可以解析版本号字符串,比较出数值最大的版本
举个伪代码逻辑参考:
const versions = 获取到的版本数组 let latestVersion = versions[0] for (const version of versions) { if (new Date(version.created_at) > new Date(latestVersion.created_at)) { latestVersion = version } }- 按创建时间排序:直接取
第三步:下载最新版本的包文件
在筛选出的latestVersion对象中,找到assets数组,其中每个元素对应一个可下载的文件(你的JAR/WAR就在这里)。元素里的url字段就是该文件的下载API地址,直接请求这个地址即可下载,同样需要带上之前的身份令牌。
内容的提问来源于stack exchange,提问作者E-Riz
相关产品推荐
相关产品推荐

