Skip to main content

故障排除

学习如何解决用户在 REST API 中遇到的最常见问题。

如果你在 API 中遇到一些奇怪的问题,下面列出了你可能会遇到的一些问题的解决方案。

400 错误,表示 API 版本不受支持

应使用 X-GitHub-Api-Version 标头指定 API 版本。 例如:

curl --标头“X-GitHub-Api-Version:2022-11-28” https://api.github.com/zen

如果指定的版本不存在,将出现 400 错误。

有关详细信息,请参阅“API 版本”。

现有存储库的 404 错误

一般来说,客户端没有正确通过身份验证时,我们会发送 404 错误。 在这些情况下,你可能会看到 403 Forbidden。 但是,由于我们不想提供有关专用存储库的任何信息,API 会改为返回 404 错误。

若要进行故障排除,请确保正确进行身份验证OAuth 访问令牌具有所需的范围第三方应用程序限制不会阻止访问,并且令牌未过期或已吊销

并非所有结果都返回

大多数 API 调用访问资源列表(例如,用户、问题等)支持分页 。 如果你发出请求但收到的结果集不完整,你可能只会看到第一页。 为了获得更多结果,你需要请求剩余的页面。

请务必不要尝试和猜测分页 URL 的格式。 并非每个 API 调用都使用相同的结构, 而是从链接标头中提取分页信息,该标头随每个请求一起返回。 有关分页的详细信息,请参阅“在 REST API 中使用分页”。

基本身份验证错误

从 2020 年 11 月 13 日起,REST API 和 OAuth 授权 API 的用户名和密码身份验证被弃用,不再有效。

使用 username/password 进行基本身份验证

如果使用的是 usernamepassword 进行 API 调用,则它们将无法再进行身份验证。 例如:

curl -u YOUR-USERNAME:YOUR-PASSWORD https://api.github.com/user/repos

测试终结点或执行本地开发时,请改用personal access token或 GitHub App 的访问令牌:

curl -H 'Authorization: Bearer YOUR-TOKEN' https://api.github.com/user/repos

有关详细信息,请参阅“管理个人访问令牌”和“关于使用 GitHub 应用进行身份验证”。

对于 OAuth apps,应使用 Web 应用程序流生成要在 API 调用标头中使用的 OAuth 令牌:

curl -H 'Authorization: Bearer YOUR-OAUTH-TOKEN' https://api.github.com/user/repos

超时

如果 GitHub 需要超过 10 秒来处理一个 API 请求, GitHub 将会终止请求,并且您将收到超时响应。

权限不足错误

如果使用的是 GitHub App 或 fine-grained personal access token,且由于令牌权限不足而收到错误,则可以使用 X-Accepted-GitHub-Permissions 标头标识访问 REST API 终结点所需的权限。

X-Accepted-GitHub-Permissions 标头的值是使用终结点所需的权限的逗号分隔列表。 有时,可以从多个权限集中选择。 在这些情况下,多个逗号分隔列表将由分号分隔。

例如:

  • X-Accepted-GitHub-Permissions: contents=read 表示 GitHub App 或 fine-grained personal access token 需要对内容权限的读取访问权限。
  • X-Accepted-GitHub-Permissions: pull_requests=write,contents=read 表示 GitHub App 或 fine-grained personal access token 需要对拉取请求权限的写入访问权限和对内容权限的读取访问权限。
  • X-Accepted-GitHub-Permissions: pull_requests=read,contents=read; issues=read,contents=read 表示 GitHub App 或 fine-grained personal access token 需要对拉取请求权限的读取访问权限和对内容权限的读取访问权限,或对问题权限的读取访问权限和对内容权限的读取访问权限。