通过 GraphQL 显示 100 多个条目 API
Display more than 100 entries through GraphQL API
我厌倦了在 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 中以编程方式遍历所有页面吗?
使用 endCursor 的分页是一种解决方案。与 REST API 一样,您无法务实地遍历所有页面。正如您指定的那样,您可以指定 endCursor 并在有下一页时遍历
从 Simon Willison 的“Paginating through the GitHub GraphQL API with Python”中汲取灵感,以下是我为查询分页所做的工作:
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"] + '\"'
我的完整代码在我的 dump_cards 实用程序的 atdumpmemex 模块中。
这里的关键是获取 pageInfo
以及其他相关节点,然后在每次 hasNextPage
为真时获取 endCursor
以便可以将其输入到查询中下一次迭代。
pageInfo 看起来像:
"pageInfo": {
"hasNextPage": false,
"endCursor": "Y3Vyc29yOnYyOpHOAAhOsg=="
}
目前 endCursor
是 base64 编码 cursor:v2:XYZ
,但不要依赖它,因为 GitHub 已将其他 ID 从 base64 编码转移到其他方案。
我厌倦了在 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 中以编程方式遍历所有页面吗?
使用 endCursor 的分页是一种解决方案。与 REST API 一样,您无法务实地遍历所有页面。正如您指定的那样,您可以指定 endCursor 并在有下一页时遍历
从 Simon Willison 的“Paginating through the GitHub GraphQL API with Python”中汲取灵感,以下是我为查询分页所做的工作:
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"] + '\"'
我的完整代码在我的 dump_cards 实用程序的 atdumpmemex 模块中。
这里的关键是获取 pageInfo
以及其他相关节点,然后在每次 hasNextPage
为真时获取 endCursor
以便可以将其输入到查询中下一次迭代。
pageInfo 看起来像:
"pageInfo": {
"hasNextPage": false,
"endCursor": "Y3Vyc29yOnYyOpHOAAhOsg=="
}
目前 endCursor
是 base64 编码 cursor:v2:XYZ
,但不要依赖它,因为 GitHub 已将其他 ID 从 base64 编码转移到其他方案。