GraphQL 该如何实现分页?精通 GraphQL 必须了解的 Connection, Edge 和 Node 概念

初次接触 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"
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

surfirst

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值