javascript 如何使用github API列出包含指定字符串的github用户?

ryoqjall  于 2023-05-27  发布在  Java
关注(0)|答案(1)|浏览(149)

我希望得到用户列表,其中用户名包含我在查询中指定的字符串。我所知道的列出用户的唯一选项是github API提供的另一个端点,但它只显示最大到前100个默认用户。

await octokit.request('GET /users/{username}', {
  username: 'string',
  headers: {
    'X-GitHub-Api-Version': '2022-11-28'
  }
})

需要帮助,谢谢。

zzwlnbp8

zzwlnbp81#

从这里的文档中,您可以使用密钥since来帮助您。
对于每个请求,检查返回列表的长度是否等于100(因为这是每个请求的大小,可以随参数而变化)。
如果是100,则继续查询同一个API,但将结果的最后一个用户的id传入since参数,这样就可以查询接下来的100个用户。
方法1(推荐):使用来自octokit的分页,如此处所述

import { Octokit } from "octokit";

const octokit = new Octokit({ });

//! notice the use of paginate here
const data = await octokit.paginate("GET /users/{username}", {
  per_page: 100,
  headers: {
    "X-GitHub-Api-Version": "2022-11-28",
  },
});

console.log(data)

方法2:继续循环,直到列表中没有100个用户,即整个列表的结尾。
快速的模型

// MOCK ONLY

let users = [];
let last_user = 0;
while (True) {
  let query = await fetch(`/users/{username}`, {
    since: last_user
  });

  users.push(query.data.users);

  if (query.data.users.length < 100 {
    break;
  }

  last_user = query.data.users[query.data.users.length - 1]
}

相关问题