GraphQL 和中继的概念
Concepts of GraphQL and Relay
我正在尝试在 golang
中构建一个 GraphQL endpoints
。
我一直在关注这些博客 Learn Golang + GraphQL + Relay #1 以在 golang
中实现 graphQl
,并且我已经成功构建了 GraphQL
.
的简单端点
有几个概念我仍然不清楚,因为我如何使用 graphQl
构建 pagination
端点,
还有像
这样的方法
//How to build endpoints for fetching data from this query
friends.first(1){
cursor,
node {
name
}
}
//or this query
friends.last(1){
cursor,
node {
name
}
}
作为,我来自Angular
背景,这个Relay
概念对我来说仍然很困惑。中继如何促进客户端和服务器之间的通信。
请提供一些使用 Node 或任何使这些概念更清楚的示例
分页从来都不是一个简单的问题,也不是 GraphQL 明确解决的问题。 GraphQL 提供了一个数据获取框架,如何使用该框架来做事情(如分页)取决于开发人员。
GraphQL 的 Relay team has attempted to standardize pagination with the cursor connection specification。游标连接规范不是 Relay 独有的,可以与 Angular 一起使用,该规范的主要目标是提供一种标准化的方式来处理来自 GraphQL 服务器的大型集合。关于此规范需要注意的主要事情是每个对象都有一个关联的游标。这个关联的游标允许客户端从集合中的任何点恢复分页。
如果您有兴趣实施 Relay 规范,我鼓励您阅读 Sashko Stubailo 的 Understanding pagination: REST, GraphQL, and Relay,他在其中解释了 Relay 连接规范背后的动机并解释了如何实施它。
要查看实际的连接规范,请查看在 GraphQL 中实现中继规范的示例 SWAPI GraphQL API。我鼓励您打开文档 window 并浏览 PeopleConnection
。请注意他们如何实现 edges
和 people
字段。
如果游标分页对您来说太复杂 use/implement,您总是可以为您的 GraphQL API 公开传统的 limit/offset 分页。界面可能看起来像这样:
{
friends(limit: 5, offset: 20) {
name
}
}
最后,您提供的查询来自 GraphQL 的早期技术预览,实际上不符合规范 (source)。更合适的查询(如 Hafiz 所述)是:
{
friends(first: 1) {
cursor
node {
name
}
}
}
我还建议您观看 React Europe 2015 的两个精彩演讲,其中更多地讨论了没有中继的 GraphQL。
我正在尝试在 golang
中构建一个 GraphQL endpoints
。
我一直在关注这些博客 Learn Golang + GraphQL + Relay #1 以在 golang
中实现 graphQl
,并且我已经成功构建了 GraphQL
.
有几个概念我仍然不清楚,因为我如何使用 graphQl
构建 pagination
端点,
还有像
//How to build endpoints for fetching data from this query
friends.first(1){
cursor,
node {
name
}
}
//or this query
friends.last(1){
cursor,
node {
name
}
}
作为,我来自Angular
背景,这个Relay
概念对我来说仍然很困惑。中继如何促进客户端和服务器之间的通信。
请提供一些使用 Node 或任何使这些概念更清楚的示例
分页从来都不是一个简单的问题,也不是 GraphQL 明确解决的问题。 GraphQL 提供了一个数据获取框架,如何使用该框架来做事情(如分页)取决于开发人员。
GraphQL 的 Relay team has attempted to standardize pagination with the cursor connection specification。游标连接规范不是 Relay 独有的,可以与 Angular 一起使用,该规范的主要目标是提供一种标准化的方式来处理来自 GraphQL 服务器的大型集合。关于此规范需要注意的主要事情是每个对象都有一个关联的游标。这个关联的游标允许客户端从集合中的任何点恢复分页。
如果您有兴趣实施 Relay 规范,我鼓励您阅读 Sashko Stubailo 的 Understanding pagination: REST, GraphQL, and Relay,他在其中解释了 Relay 连接规范背后的动机并解释了如何实施它。
要查看实际的连接规范,请查看在 GraphQL 中实现中继规范的示例 SWAPI GraphQL API。我鼓励您打开文档 window 并浏览 PeopleConnection
。请注意他们如何实现 edges
和 people
字段。
如果游标分页对您来说太复杂 use/implement,您总是可以为您的 GraphQL API 公开传统的 limit/offset 分页。界面可能看起来像这样:
{
friends(limit: 5, offset: 20) {
name
}
}
最后,您提供的查询来自 GraphQL 的早期技术预览,实际上不符合规范 (source)。更合适的查询(如 Hafiz 所述)是:
{
friends(first: 1) {
cursor
node {
name
}
}
}
我还建议您观看 React Europe 2015 的两个精彩演讲,其中更多地讨论了没有中继的 GraphQL。