我已经厌倦了使用 github grpahQL API 中的 endCursor 和 hasNextPage 进行分页来获取超过 100 个数据。我使用的查询是:
query {
organization(login:"XXX") {
repository(name:"XX") {
pullRequests(first:100, states:[OPEN], after: "XXX" ) {
pageInfo{
hasNextPage
endCursor
}
}
}
这是工作。但为了访问更多详细信息,需要进行迭代分页。谁能提供一种有效的替代方案来在 GraphQL API 中以编程方式遍历所有页面?
从西蒙·威利森的《使用 Python 对 GitHub GraphQL API 进行分页' 这是我一直在对查询进行分页的方法:
query {
node(id: "PROJECT_ID") {
... on ProjectNext {
items(first: 100 after: CURSOR) {
pageInfo {
hasNextPage
endCursor
}
nodes {
title
fieldValues(first: 8) {
nodes {
value
}
}
content {
... on Issue {
number
labels(first: 50) {
nodes {
name
}}}}}}}}}
在我的Python代码中我正在拼接PROJECT_ID
将变量设置为我引用的项目 ID。
对于光标after: CURSOR
被替换为""
最初,然后是我设置的下一页cursor = 'after:\\"' + response["data"]["node"]["items"]["pageInfo"]["endCursor"] + '\\"'
我的完整代码位于转储memex我的 dump_cards 实用程序的模块。
这里的关键是要得到pageInfo
以及其他相关节点,然后抓取endCursor
每一次hasNextPage
为 true,以便可以将其输入到下一次迭代的查询中。
pageInfo 看起来像这样:
"pageInfo": {
"hasNextPage": false,
"endCursor": "Y3Vyc29yOnYyOpHOAAhOsg=="
}
此刻endCursor
是base64编码的cursor:v2:XYZ
,但不要依赖于此,因为 GitHub 已将其他 ID 从 Base64 编码转移到其他方案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)