是否有可能扩展图形响应,而不仅仅是用于分页的数据



在GraphQL中响应通常如下所示:

{
  "data": [{
    "id": 1,
    "username": "Jon Snow",
    "email": "crow@northofthew.all",
    "age": 20
  }, {
    "id": 2,
    "username": "Tyrion Lannister",
    "email": "drunk@i.mp",
    "age": 34
  }, {
    "id": 3,
    "username": "Sansa Stark",
    "email": "redhead@why.me",
    "age": 17
  }]
}

是否可以在您的响应中添加元数据,例如像这样的分页?

{
  "pagination": {
    "total": 14,
    "count": 230,
  },
  "data": [{
    "id": 1,
    "username": "Jon Snow",
    "email": "crow@northofthew.all",
    "age": 20
  }, {
    "id": 2,
    "username": "Tyrion Lannister",
    "email": "drunk@i.mp",
    "age": 34
  }]
}

我使用express-graphql,目前把这些分页自定义响应头,这很好,但它可以更好。由于GraphQL响应已经用"data"包装了,所以在响应中添加更多的"data"并不奇怪。

加强@CommonsWare已经声明的内容,根据规范,这将是无效的GraphQL响应。关于分页,Relay有自己的分页方法,称为连接,但实际上,还有其他几种可能的方法,甚至在某些情况下更适合(连接不是灵丹妙药)。

我想通过添加GraphQL的分层特性将相关数据激发到同一级别来补充已经说过的内容。一个例子胜过千言万语,所以它是这样的:

query Q {
  pagination_info { # what is this info related to? completely unclear
    total
    count
  }
  user {
    friends {
      id
    }
  }
}

相反……

query Q {
  user {
    friends {
      pagination_info { # fairly obvious that this is related to friends
        total
        count
      }
      friend {
        id
      }
    }
  }
}

相关内容

最新更新