Github APIv4 GraphQL 有一些很好的特性,但我找不到使用分页来搜索问题的方法,比如
https://api.github.com/search/issues?q=repo:user/somerepo+is:open&page=10&per_page=100
有没有办法解决它?谢谢!
Github APIv4 GraphQL 有一些很好的特性,但我找不到使用分页来搜索问题的方法,比如
https://api.github.com/search/issues?q=repo:user/somerepo+is:open&page=10&per_page=100
有没有办法解决它?谢谢!
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=="
}
如果您Y3Vyc29yOjEwMA==
在 base64 中解码,它会给出: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
}
}
}
一种编程方法是添加after: base64("cursor:<item_num>")
从 0 ( after:"Y3Vyc29yOjA="
) 到 X 的 item_num。您可以通过第一次请求值来了解 X issueCount
(或根据您的用例在初始请求中)
请注意,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
查询。例如,查看这篇文章的提交光标格式