给定 URL https://github.com/foo/bar,我希望能够获取 foo 的所有存储库。如果 foo 是用户,我需要调用api.repos.getForUser({username: 'foo'}),如果是组织,我需要调用api.repos.getForOrg({org: 'foo'}).
我的问题是:如何判断“foo”是组织还是用户?
现在,我以昂贵的方式“解决”它,试图获得一个名为“foo”的组织,如果我得到了它,我会尝试获取它的存储库;如果我最终得到一个异常(我使用 Promise)并且异常的代码是“404”,我假设“foo”是一个用户,并尝试获取用户存储库。
这显然是低效的,并且具有添加可能触发速率限制的调用的副作用。
有没有更简单的方法来知道“foo”是用户还是组织?
众所周知,处理异常的成本很高。因此,您不必尝试获取 org 并处理404,而是可以查看type响应的属性,https://api.github.com/users/<username>以确定“用户”是用户还是组织,然后进行相应操作。
例如,调用我的 GitHub 用户 API https://api.github.com/users/raghav710返回
{
"login": "raghav710",
...
"type": "User",
...
}
Run Code Online (Sandbox Code Playgroud)
对https://api.github.com/users/Microsoft等组织的调用会返回
{
"login": "Microsoft",
...
"type": "Organization",
...
}
Run Code Online (Sandbox Code Playgroud)
更新:在一次调用中完成此操作
据我所知,您已经在尝试访问某个 URL https://github.com/<user or organization>/<repo name>,并尝试获取该用户或组织的所有存储库。
建议不要尝试在上述链接上执行 GET,而是可以在https://api.github.com/repos/<user or organization>/<repo name>
例如,在https://api.github.com/repos/Microsoft/vscode上执行 GET
给予
{
"id": 41881900,
"name": "vscode",
"full_name": "Microsoft/vscode",
"owner": {
"login": "Microsoft",
"id": 6154722,
...
"type": "Organization",
},
"private": false,
"html_url": "https://github.com/Microsoft/vscode",
...
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,熟悉的type字段在所有者密钥下可用。您可以用它来决定您的下一次通话
| 归档时间: |
|
| 查看次数: |
1334 次 |
| 最近记录: |