为 subject_type GitHub 用户 API 获取 subject_id

Getting the subject_id for the subject_type GitHub User API

通过 Octokit.js 使用 GitHub API 并查看 getContextForUser (https://docs.github.com/en/rest/users/users#get-contextual-information-for-a-user) 的文档,它提到在指定 subject_type你还需要指定subject_id。对于 subject_id,它声明“使用您指定的 subject_type 的 ID。”

我不知道你从哪里得到 subject_type 的相关 subject_id。我搜索了高低但没有成功。有人知道在哪里可以找到显示 subject_type 的 ID 的地图吗?

subject_id 是您想要了解其信息的事物的 ID。例如,如果您想获得有关存储库的信息(在本例中为主题类型),则必须传递您想要了解其信息的存储库的 ID。

在我看来,API 文档说这必须是一个字符串,而它通常是一个数字 ID,这有点令人困惑。

存储库示例

让我们来看一个例子:假设我们想知道存储库 torvalds/linux 上 Torvald 的气垫卡是什么。首先,我们需要获取存储库的 ID:

> curl https://api.github.com/repos/torvalds/linux
{
  "id": 2325298,
# ...

有了这个ID,我们可以查询主题类型repository:

> curl "https://api.github.com/users/torvalds/hovercard?subject_type=repository&subject_id=2325298"
{
  "contexts": [
    {
      "message": "Owns this repository",
      "octicon": "repo"
    },
    {
      "message": "Committed to this repository in the past day",
      "octicon": "git-commit"
    }
  ]
}

拉取请求示例

同样,你可以获取pull request的ID。

你需要小心你使用的是哪个 ID:虽然存储库中的拉取请求通常用一个小数字标识(你在 URL 中看到的那个),API 有问题的没有存储库的上下文,因此您需要传递全局 ID。

> curl "https://api.github.com/repos/torvalds/linux/pulls/486"
{
  "url": "https://api.github.com/repos/torvalds/linux/pulls/486",
  "id": 150630598,
# ...

然后使用主题类型pull_request获取Linus在其中的角色:

curl "https://api.github.com/users/torvalds/hovercard?subject_type=pull_request&subject_id=150630598"
{
  "contexts": [
    {
      "message": "Owns this repository",
      "octicon": "repo"
    },
    {
      "message": "Committed to this repository in the past day",
      "octicon": "git-commit"
    }
  ]
}

请注意,获取上下文信息的端点需要身份验证,因此您必须向 curl 示例添加 header。

如果您经常尝试使用 GitHub API,我建议安装 GitHub CLI,因为它允许您像这样 运行 验证查询:

> gh api /repos/torvals/linux