发布资源的 REST API 端点
使用 REST API 管理发布资源。
获取发布资源
下载资源的二进制内容
- 如果在浏览器中,请获取响应中提供的 `browser_download_url` 密钥中指定的地址。
- 或者,将请求的 `Accept` 头设置为
application/octet-stream
。API 将重定向客户端到该地址,或者如果可能的话直接流式传输。API 客户端应该处理 `200` 或 `302` 响应。
“获取发布资源”的细粒度访问令牌
此端点可以使用以下细粒度令牌类型:
细粒度令牌必须具有以下权限集
- “内容”代码仓库权限(读取)
如果仅请求公共资源,则无需身份验证或上述权限即可使用此端点。
“获取发布资源”的参数
名称,类型,描述 |
---|
accept 字符串建议设置为 |
名称,类型,描述 |
---|
owner 字符串 必填代码仓库的账户所有者。名称不区分大小写。 |
repo 字符串 必填代码仓库的名称,不包含 `.git` 扩展名。名称不区分大小写。 |
asset_id 整数 必填资源的唯一标识符。 |
“获取发布资源”的 HTTP 响应状态码
状态码 | 描述 |
---|---|
200 | 成功 |
302 | 已找到 |
404 | 资源未找到 |
“获取发布资源”的代码示例
请求示例
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 字符串建议设置为 |
名称,类型,描述 |
---|
owner 字符串 必填代码仓库的账户所有者。名称不区分大小写。 |
repo 字符串 必填代码仓库的名称,不包含 `.git` 扩展名。名称不区分大小写。 |
asset_id 整数 必填资源的唯一标识符。 |
名称,类型,描述 |
---|
name 字符串资源的文件名。 |
label 字符串资源的替代简短描述。用于代替文件名。 |
state 字符串 |
“更新发布资源”的 HTTP 响应状态码
状态码 | 描述 |
---|---|
200 | 成功 |
“更新发布资源”的代码示例
请求示例
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 字符串建议设置为 |
名称,类型,描述 |
---|
owner 字符串 必填代码仓库的账户所有者。名称不区分大小写。 |
repo 字符串 必填代码仓库的名称,不包含 `.git` 扩展名。名称不区分大小写。 |
asset_id 整数 必填资源的唯一标识符。 |
“删除发布资源”的 HTTP 响应状态码
状态码 | 描述 |
---|---|
204 | 无内容 |
“删除发布资源”的代码示例
请求示例
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 字符串建议设置为 |
名称,类型,描述 |
---|
owner 字符串 必填代码仓库的账户所有者。名称不区分大小写。 |
repo 字符串 必填代码仓库的名称,不包含 `.git` 扩展名。名称不区分大小写。 |
release_id 整数 必填发布的唯一标识符。 |
名称,类型,描述 |
---|
per_page 整数每页结果数(最大 100)。更多信息,请参见“REST API 中使用分页”。 默认值: |
page 整数要获取的结果的页码。更多信息,请参见“REST API 中使用分页”。 默认值: |
“列出发布资源”的 HTTP 响应状态码
状态码 | 描述 |
---|---|
200 | 成功 |
“列出发布资源”的代码示例
请求示例
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 字符串建议设置为 |
名称,类型,描述 |
---|
owner 字符串 必填代码仓库的账户所有者。名称不区分大小写。 |
repo 字符串 必填代码仓库的名称,不包含 `.git` 扩展名。名称不区分大小写。 |
release_id 整数 必填发布的唯一标识符。 |
名称,类型,描述 |
---|
name 字符串 必需 |
label 字符串 |
"上传发行版资源"的 HTTP 响应状态码
状态码 | 描述 |
---|---|
201 | 成功上传的响应 |
422 | 如果您上传的资源文件名与另一个已上传的资源文件名相同时的响应 |
"上传发行版资源"的代码示例
请求示例
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 } }