如何通过单次GitHub API调用批量查询邮箱对应的GitHub用户名?
批量通过邮箱查询GitHub用户名的最优方案
手里有几百个从git log里导出的邮箱,想对应到GitHub用户名,不想挨个调用API浪费次数?之前试的两个方案都不顶用——要么批量查用户但不支持邮箱维度,要么只能单个邮箱查没法批量。给你两个实际能用的思路:
1. 用GitHub GraphQL API做批量查询
GitHub的REST API确实没法批量按邮箱查用户,但GraphQL API可以一次请求里塞多个邮箱查询。你可以把邮箱分成20-30个一组,每组发一个GraphQL请求,几百个邮箱也就几次请求搞定。
举个查询示例(记得替换成你的邮箱和个人访问令牌):
query BatchEmailLookup { alice: user(email: "alice@example.com") { login } bob: user(email: "bob@example.com") { login } charlie: user(email: "charlie@example.com") { login } # 可以继续加更多邮箱查询,别让请求太长就行 }
注意事项:
- 必须用个人访问令牌(PAT)认证,且令牌需要有
user:email权限,否则无法通过邮箱匹配用户 - 每个请求别塞太多邮箱,避免超过GraphQL的查询长度限制,一般20-30个一组比较稳妥
- 返回结果里如果某个邮箱没有对应GitHub账号,会返回
null,记得处理这种无匹配的情况
2. 本地缓存已查询的映射
把已经查到的「邮箱-用户名」对应关系存在本地文件(比如JSON或CSV)里,每次查询前先比对本地数据,只把没查到的新邮箱拿去调用API,能大幅减少重复查询的次数。
另外要注意GitHub的API速率限制:GraphQL API每小时允许5000次请求,分组查询的话完全够用,不用担心触发限制。
内容的提问来源于stack exchange,提问作者Daniel Porteous
相关产品推荐
相关产品推荐

