初次接触 GraphQL 的开发者在解决分页问题时,通常会直接和开发其他 Restful API 一样在 parameters 里增加诸如 pageNum, pageSize 这样的参数实现分页功能。
而实际上,官方 GraphQL 会使用 Connection, Edge 和 Node 的概念来实现分页功能。下面是 github 的 GraphQL API 查询用户的软件仓库的例子:
以 GitHub GraphQL API 为例看分页的实现模式
查询第 1 页
以下脚本查询的是我在 github 上的仓库的第一页的内容。每页包含3个仓库。
query {
viewer {
login
repositories(first:3) {
edges {
cursor
node {
id
name
}
}
pageInfo {
endCursor
startCursor
hasNextPage
hasPreviousPage
}
}
}
}
以下是执行结果:
{
"data": {
"viewer": {
"login": "surfirst",
"repositories": {
"edges": [
{
"cursor": "Y3Vyc29yOnYyOpHOBhQrBg==",
"node": {
"id": "MDEwOlJlcG9zaXRvcnkxMDE5ODUwMzA=",
"name": "graphql_typescript_starter"
}
},
{
"cursor": "Y3Vyc29yOnYyOpHOBkEhwQ==",
"node": {
"id": "MDEwOlJlcG9zaXRvcnkxMDQ5MzE3Nzc=",
"name": "moge_game"
}
},
{
"cursor": "Y3Vyc29yOnYyOpHOEG_wXw==",
"node": {
"id": "MDEwOlJlcG9zaXRvcnkyNzU3NzE0ODc=",
"name"

最低0.47元/天 解锁文章
118





