Github GraphQL api 使用游标来遍历结果。但是,没有关于光标格式的文档,而且对于搜索查询,它似乎只是 base64 编码字符串 cursor:<digit>
您可以在指定pageInfo { endCursor } 时检查此项:
query {
search(type:ISSUE, query:"repo:mui-org/material-ui is:issue", first: 100){
nodes {
... on Issue {
number
title
}
}
pageInfo {
endCursor
}
}
}
它给出了:
"pageInfo": {
"endCursor": "Y3Vyc29yOjEwMA=="
}
如果你在 base64 中解码 Y3Vyc29yOjEwMA==,它会给出:cursor:100,所以它不是真正的光标,你可以使用它来分页,就像在 Rest API v3 中一样(例如,按照你的建议跳过页面)
假设您希望第 10 页直接包含每页 100 个项目,它将是 cursor:900,它给出了 Y3Vyc29yOjkwMA== base64 编码:
{
search(type: ISSUE, query: "repo:mui-org/material-ui is:issue", first: 100, after:"Y3Vyc29yOjkwMA==") {
nodes {
... on Issue {
number
title
}
}
issueCount
pageInfo {
endCursor
}
}
}
一种编程方法是将带有 item_num 从 0 (after:"Y3Vyc29yOjA=") 开始的 after: base64("cursor:<item_num>") 添加到 X。您可以通过第一次请求 issueCount 值来了解 X(或在初始请求中,具体取决于您的用例)
请注意,Github 搜索 API 的结果限制为 1000 个,因此理论上 per_page=100 时您无法访问 > 10 个页面:https://api.github.com/search/issues?q=repo:mui-org/material-ui&page=11&per_page=100(同样的限制适用于 GraphQL)
另请注意,游标格式似乎会根据查询类型而变化,上述答案仅适用于search 查询。例如,检查提交光标格式的this post