无法通过API上传github发布资产

Sha*_*ron 7 github-api

我有一个没有资产的github发布:

$ curl https://api.github.com/repos/cljsinfo/api-docs/releases/1260660/assets
[

]
Run Code Online (Sandbox Code Playgroud)

但我无法将资产上传到此版本:

$ curl -X POST --header "Content-Type:application/edn" --data-binary @cljsdocs-full.edn "https://api.github.com/repos/cljsinfo/api-docs/releases/1260660/assets?name=full.edn&access_token=$(cat my-token)"
{
  "message": "Not Found",
  "documentation_url": "https://developer.github.com/v3"
}
Run Code Online (Sandbox Code Playgroud)

我的api访问令牌有权public_repo访问.感谢您帮助上传此资产.

Yev*_*man 5

资产上传 URL 的格式为https://<upload_url>/repos/:owner/:repo/releases/:id/assets?name=foo.zip。有几种可能的原因可能会导致您收到非常无用的“未找到”错误:

  1. 错误的发布 ID:id上面 URL 中的字段不是您为发布提供的名称,而是由 GitHub 生成的数字 ID(可能是数据库 ID)。要获取发布 ID,您必须调用发布 API并在 JSON 响应中搜索tag_name与您使用的名称相同的发布。例如,如果您将 release 命名为 release v0.0.3,请在 JSON 中搜索具有"tag_name": "v0.0.3"并使用该 releaseid字段的版本。
  2. 错误的上传网址。您用于上传资产的 URL 与用于所有其他 API 调用的 URL 不同。要获得正确的上传 URL,您可以使用相同的发布 API,使用tag_name上述方法找到您的发布,并upload_url从 JSON 响应中提取字段。这是伊万(已接受)的答案。
  3. 缺少 GitHub 访问令牌权限。这是一个我绊倒了最坏的打算,作为标记用我在能够使API调用的API发布和获取有关我的回购信息,但将资产上载到同一回购。“未找到”错误响应根本没有暗示这一点。在您的个人访问令牌页面中检查您的令牌的权限,并根据需要确保repo和/或public_repo已检查。