跳至主要内容
REST API 现在已版本化。 更多信息,请参见“关于 API 版本控制”。

发布资源的 REST API 端点

使用 REST API 管理发布资源。

获取发布资源

下载资源的二进制内容

  • 如果在浏览器中,请获取响应中提供的 `browser_download_url` 密钥中指定的地址。
  • 或者,将请求的 `Accept` 头设置为 application/octet-stream。API 将重定向客户端到该地址,或者如果可能的话直接流式传输。API 客户端应该处理 `200` 或 `302` 响应。

“获取发布资源”的细粒度访问令牌

此端点可以使用以下细粒度令牌类型:

细粒度令牌必须具有以下权限集

  • “内容”代码仓库权限(读取)

如果仅请求公共资源,则无需身份验证或上述权限即可使用此端点。

“获取发布资源”的参数

请求头
名称,类型,描述
accept 字符串

建议设置为 application/vnd.github+json

路径参数
名称,类型,描述
owner 字符串 必填

代码仓库的账户所有者。名称不区分大小写。

repo 字符串 必填

代码仓库的名称,不包含 `.git` 扩展名。名称不区分大小写。

asset_id 整数 必填

资源的唯一标识符。

“获取发布资源”的 HTTP 响应状态码

状态码描述
200

成功

302

已找到

404

资源未找到

“获取发布资源”的代码示例

请求示例

get/repos/{owner}/{repo}/releases/assets/{asset_id}
curl -L \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ -H "X-GitHub-Api-Version: 2022-11-28" \ https://api.github.com/repos/OWNER/REPO/releases/assets/ASSET_ID

响应

状态:200
{ "url": "https://api.github.com/repos/octocat/Hello-World/releases/assets/1", "browser_download_url": "https://github.com/octocat/Hello-World/releases/download/v1.0.0/example.zip", "id": 1, "node_id": "MDEyOlJlbGVhc2VBc3NldDE=", "name": "example.zip", "label": "short description", "state": "uploaded", "content_type": "application/zip", "size": 1024, "download_count": 42, "created_at": "2013-02-27T19:35:32Z", "updated_at": "2013-02-27T19:35:32Z", "uploader": { "login": "octocat", "id": 1, "node_id": "MDQ6VXNlcjE=", "avatar_url": "https://github.com/images/error/octocat_happy.gif", "gravatar_id": "", "url": "https://api.github.com/users/octocat", "html_url": "https://github.com/octocat", "followers_url": "https://api.github.com/users/octocat/followers", "following_url": "https://api.github.com/users/octocat/following{/other_user}", "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", "organizations_url": "https://api.github.com/users/octocat/orgs", "repos_url": "https://api.github.com/users/octocat/repos", "events_url": "https://api.github.com/users/octocat/events{/privacy}", "received_events_url": "https://api.github.com/users/octocat/received_events", "type": "User", "site_admin": false } }

更新发布资源

拥有代码仓库推送权限的用户可以编辑发布资源。

“更新发布资源”的细粒度访问令牌

此端点可以使用以下细粒度令牌类型:

细粒度令牌必须具有以下权限集

  • “内容”代码仓库权限(写入)

“更新发布资源”的参数

请求头
名称,类型,描述
accept 字符串

建议设置为 application/vnd.github+json

路径参数
名称,类型,描述
owner 字符串 必填

代码仓库的账户所有者。名称不区分大小写。

repo 字符串 必填

代码仓库的名称,不包含 `.git` 扩展名。名称不区分大小写。

asset_id 整数 必填

资源的唯一标识符。

请求体参数
名称,类型,描述
name 字符串

资源的文件名。

label 字符串

资源的替代简短描述。用于代替文件名。

state 字符串

“更新发布资源”的 HTTP 响应状态码

状态码描述
200

成功

“更新发布资源”的代码示例

请求示例

patch/repos/{owner}/{repo}/releases/assets/{asset_id}
curl -L \ -X PATCH \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ -H "X-GitHub-Api-Version: 2022-11-28" \ https://api.github.com/repos/OWNER/REPO/releases/assets/ASSET_ID \ -d '{"name":"foo-1.0.0-osx.zip","label":"Mac binary"}'

响应

状态:200
{ "url": "https://api.github.com/repos/octocat/Hello-World/releases/assets/1", "browser_download_url": "https://github.com/octocat/Hello-World/releases/download/v1.0.0/example.zip", "id": 1, "node_id": "MDEyOlJlbGVhc2VBc3NldDE=", "name": "example.zip", "label": "short description", "state": "uploaded", "content_type": "application/zip", "size": 1024, "download_count": 42, "created_at": "2013-02-27T19:35:32Z", "updated_at": "2013-02-27T19:35:32Z", "uploader": { "login": "octocat", "id": 1, "node_id": "MDQ6VXNlcjE=", "avatar_url": "https://github.com/images/error/octocat_happy.gif", "gravatar_id": "", "url": "https://api.github.com/users/octocat", "html_url": "https://github.com/octocat", "followers_url": "https://api.github.com/users/octocat/followers", "following_url": "https://api.github.com/users/octocat/following{/other_user}", "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", "organizations_url": "https://api.github.com/users/octocat/orgs", "repos_url": "https://api.github.com/users/octocat/repos", "events_url": "https://api.github.com/users/octocat/events{/privacy}", "received_events_url": "https://api.github.com/users/octocat/received_events", "type": "User", "site_admin": false } }

删除发布资源

“删除发布资源”的细粒度访问令牌

此端点可以使用以下细粒度令牌类型:

细粒度令牌必须具有以下权限集

  • “内容”代码仓库权限(写入)

“删除发布资源”的参数

请求头
名称,类型,描述
accept 字符串

建议设置为 application/vnd.github+json

路径参数
名称,类型,描述
owner 字符串 必填

代码仓库的账户所有者。名称不区分大小写。

repo 字符串 必填

代码仓库的名称,不包含 `.git` 扩展名。名称不区分大小写。

asset_id 整数 必填

资源的唯一标识符。

“删除发布资源”的 HTTP 响应状态码

状态码描述
204

无内容

“删除发布资源”的代码示例

请求示例

delete/repos/{owner}/{repo}/releases/assets/{asset_id}
curl -L \ -X DELETE \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ -H "X-GitHub-Api-Version: 2022-11-28" \ https://api.github.com/repos/OWNER/REPO/releases/assets/ASSET_ID

响应

状态:204

列出发布资源

“列出发布资源”的细粒度访问令牌

此端点可以使用以下细粒度令牌类型:

细粒度令牌必须具有以下权限集

  • “内容”代码仓库权限(读取)

如果仅请求公共资源,则无需身份验证或上述权限即可使用此端点。

“列出发布资源”的参数

请求头
名称,类型,描述
accept 字符串

建议设置为 application/vnd.github+json

路径参数
名称,类型,描述
owner 字符串 必填

代码仓库的账户所有者。名称不区分大小写。

repo 字符串 必填

代码仓库的名称,不包含 `.git` 扩展名。名称不区分大小写。

release_id 整数 必填

发布的唯一标识符。

查询参数
名称,类型,描述
per_page 整数

每页结果数(最大 100)。更多信息,请参见“REST API 中使用分页”。

默认值: 30

page 整数

要获取的结果的页码。更多信息,请参见“REST API 中使用分页”。

默认值: 1

“列出发布资源”的 HTTP 响应状态码

状态码描述
200

成功

“列出发布资源”的代码示例

请求示例

get/repos/{owner}/{repo}/releases/{release_id}/assets
curl -L \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ -H "X-GitHub-Api-Version: 2022-11-28" \ https://api.github.com/repos/OWNER/REPO/releases/RELEASE_ID/assets

响应

状态:200
[ { "url": "https://api.github.com/repos/octocat/Hello-World/releases/assets/1", "browser_download_url": "https://github.com/octocat/Hello-World/releases/download/v1.0.0/example.zip", "id": 1, "node_id": "MDEyOlJlbGVhc2VBc3NldDE=", "name": "example.zip", "label": "short description", "state": "uploaded", "content_type": "application/zip", "size": 1024, "download_count": 42, "created_at": "2013-02-27T19:35:32Z", "updated_at": "2013-02-27T19:35:32Z", "uploader": { "login": "octocat", "id": 1, "node_id": "MDQ6VXNlcjE=", "avatar_url": "https://github.com/images/error/octocat_happy.gif", "gravatar_id": "", "url": "https://api.github.com/users/octocat", "html_url": "https://github.com/octocat", "followers_url": "https://api.github.com/users/octocat/followers", "following_url": "https://api.github.com/users/octocat/following{/other_user}", "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", "organizations_url": "https://api.github.com/users/octocat/orgs", "repos_url": "https://api.github.com/users/octocat/repos", "events_url": "https://api.github.com/users/octocat/events{/privacy}", "received_events_url": "https://api.github.com/users/octocat/received_events", "type": "User", "site_admin": false } } ]

上传发布资源

此端点使用 超媒体关系 来确定要访问的 URL。用于上传发布资源的端点特定于您的发布。使用 创建发布端点 响应中返回的 `upload_url` 上传发布资源。

您需要使用支持 SNI 的 HTTP 客户端来调用此端点。

大多数库会自动设置所需的Content-Length 头部。使用所需的Content-Type 头部来提供资源的媒体类型。媒体类型的列表,请参见媒体类型。例如

application/zip

GitHub 期望资源数据为原始二进制格式,而不是 JSON 格式。您需要将资源的原始二进制内容作为请求正文发送。端点的其他所有内容都与 API 的其余部分相同。例如,您仍然需要传递身份验证才能上传资源。

发生上游故障时,您将收到502 Bad Gateway 状态码。这可能会留下状态为starter的空资源。可以安全地删除它。

备注

  • GitHub 会重命名包含特殊字符、非字母数字字符以及前导或尾随句点的资源文件名。“列出发行版资源”端点列出了重命名的文件名。更多信息和帮助,请联系GitHub 支持
  • 要查找release_id,请查询GET /repos/{owner}/{repo}/releases/latest 端点
  • 如果您上传的资源文件名与另一个已上传的资源文件名相同,您将收到错误消息,必须先删除旧文件才能重新上传新资源。

"上传发行版资源"参数

请求头
名称,类型,描述
accept 字符串

建议设置为 application/vnd.github+json

路径参数
名称,类型,描述
owner 字符串 必填

代码仓库的账户所有者。名称不区分大小写。

repo 字符串 必填

代码仓库的名称,不包含 `.git` 扩展名。名称不区分大小写。

release_id 整数 必填

发布的唯一标识符。

查询参数
名称,类型,描述
name 字符串 必需
label 字符串

"上传发行版资源"的 HTTP 响应状态码

状态码描述
201

成功上传的响应

422

如果您上传的资源文件名与另一个已上传的资源文件名相同时的响应

"上传发行版资源"的代码示例

请求示例

post/repos/{owner}/{repo}/releases/{release_id}/assets
curl -L \ -X POST \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ -H "X-GitHub-Api-Version: 2022-11-28" \ -H "Content-Type: application/octet-stream" \ "https://uploads.github.com/repos/OWNER/REPO/releases/RELEASE_ID/assets?name=example.zip" \ --data-binary "@example.zip"

成功上传的响应

状态:201
{ "url": "https://api.github.com/repos/octocat/Hello-World/releases/assets/1", "browser_download_url": "https://github.com/octocat/Hello-World/releases/download/v1.0.0/example.zip", "id": 1, "node_id": "MDEyOlJlbGVhc2VBc3NldDE=", "name": "example.zip", "label": "short description", "state": "uploaded", "content_type": "application/zip", "size": 1024, "download_count": 42, "created_at": "2013-02-27T19:35:32Z", "updated_at": "2013-02-27T19:35:32Z", "uploader": { "login": "octocat", "id": 1, "node_id": "MDQ6VXNlcjE=", "avatar_url": "https://github.com/images/error/octocat_happy.gif", "gravatar_id": "", "url": "https://api.github.com/users/octocat", "html_url": "https://github.com/octocat", "followers_url": "https://api.github.com/users/octocat/followers", "following_url": "https://api.github.com/users/octocat/following{/other_user}", "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", "organizations_url": "https://api.github.com/users/octocat/orgs", "repos_url": "https://api.github.com/users/octocat/repos", "events_url": "https://api.github.com/users/octocat/events{/privacy}", "received_events_url": "https://api.github.com/users/octocat/received_events", "type": "User", "site_admin": false } }