如何使用GitHub API筛选出用户名包含指定字符串的用户?
解决方案
1. 替换为正确的API接口
你当前调用的GET /users/{username}是单个用户的详情接口,无法批量搜索用户名包含指定字符串的用户。正确的选择是使用GitHub的搜索用户接口:GET /search/users。
2. 核心搜索参数配置
通过接口的q参数指定搜索规则,要匹配用户名包含目标字符串,语法为:{关键词} in:login。比如要找用户名包含test的用户,参数值就是test in:login。
3. 自动处理分页突破单页限制
GitHub搜索接口默认每页返回30条结果,最多支持获取前1000条数据。使用octokit的paginate方法可以自动处理分页逻辑,无需手动解析响应头的分页链接。
完整可运行代码
import { Octokit } from "@octokit/rest"; const octokit = new Octokit({ auth: "你的GitHub访问令牌(可选,提升请求限额)", headers: { 'X-GitHub-Api-Version': '2022-11-28' } }); async function getUsersWithKeywordInUsername(keyword) { // 自动分页获取所有符合条件的用户(最多1000条) const userList = await octokit.paginate( 'GET /search/users', { q: `${keyword} in:login`, per_page: 100, // 每页拉取最大数量,减少请求次数 sort: 'login' }, (response) => response.data.items ); // 提取关键信息返回,可按需调整 return userList.map(user => ({ username: user.login, userId: user.id, profileUrl: user.html_url })); } // 调用示例 getUsersWithKeywordInUsername("octo") .then(users => console.log(users)) .catch(error => console.error(error));
关键注意事项
- 请求限额:未授权请求每小时最多60次,添加GitHub访问令牌后提升至5000次/小时,建议配置令牌
- 结果上限:GitHub搜索接口仅能返回前1000条匹配结果,无法获取超出此范围的数据
- 搜索语法扩展:可在
q参数中添加更多过滤条件,比如location:Shanghai筛选指定地区用户,具体规则参考GitHub官方搜索文档
内容的提问来源于stack exchange,提问作者gfek
相关产品推荐
相关产品推荐

