You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Octokit查询组织内所有仓库的开放PR?

解决方法:使用GitHub搜索API实现跨仓库PR查询

你浏览器里用的那个URL是GitHub网页端的内部搜索接口,不属于官方公开的REST API范畴,所以直接用Octokit调用GET /pulls会返回404。要实现单次(或少量分页请求)获取组织所有开放PR,应该用官方提供的搜索拉取请求API,这个接口支持跨仓库筛选,完全符合你的需求。

具体实现代码(Octokit)

用Octokit的search.pulls方法即可,示例如下:

import { Octokit } from "octokit";

const octokit = new Octokit({ auth: "你的访问令牌" });

async function getAllOrgOpenPRs(orgName) {
  const prs = [];
  let page = 1;
  const perPage = 100; // 搜索API每页最多返回100条结果

  while (true) {
    const response = await octokit.rest.search.pulls({
      q: `is:open is:pr org:${orgName}`,
      per_page: perPage,
      page: page,
    });

    prs.push(...response.data.items);

    // 检查是否还有下一页结果
    if (response.data.items.length < perPage) {
      break;
    }
    page++;
  }

  return prs;
}

// 调用示例
getAllOrgOpenPRs("my-org-name").then(prs => {
  console.log(`找到${prs.length}个开放PR:`, prs);
});

关键说明

  • 搜索API的q参数和你浏览器URL里的查询语法完全一致,支持org:、is:open、is:pr这些筛选条件
  • 搜索API有结果上限(最多返回1000条匹配结果),如果你的组织开放PR超过这个数,可能需要结合其他筛选条件(比如按时间范围)拆分查询
  • 相比遍历每个仓库查询,这个方法的效率高很多,只需要几次分页请求就能拿到所有结果,不用逐个仓库发起请求

为什么浏览器的URL能工作?

那个URL是GitHub网页端自己用的非公开接口,没有被纳入官方API文档,随时可能变更或限制访问,不建议在生产代码中依赖它。官方推荐的稳定方式就是用搜索API。

内容的提问来源于stack exchange,提问作者Graeme Perrow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 06:09:59