带有@export指令的GraphQL“batchOperations”

Tho*_*ggi 5 apollo graphql apollo-server apollo-client

几年前,我使用下面来自 Lee Byron 在 React Europe 的 GraphQL 演讲中的幻灯片创建了这个 github 问题。该幻灯片描述了使用所谓的指令的“batchOperations”。当时,这是 GraphQL api 的实验部分,仍然不是得到广泛支持的标准功能。@export

我的问题是现在已经过去了一段时间了。这可能吗?具体来说可以使用 Apollo 吗?我使用 Apollo 服务器检查了对该指令的本机支持,并且游乐场给了我错误Unknown directive @export

我在文档中找到了对该指令的引用:

https://www.apollographql.com/docs/link/links/rest/#export-directive

然而它似乎与指令捆绑在一起@rest

我还在 Apollo 客户端的配置中找到了对指令的引用:

https://www.apollographql.com/docs/devtools/apollo-config/#clientclientonlydirectives-clientclientschemadirectives

幻灯片来自 Lee Byron 关于 GraphQL 显示 @export 指令 API 的演讲

(这只是演讲中的幻灯片,而不是工作代码示例)

如果可能的话,很高兴在示例存储库中看到此功能的工作示例,即使它的形状(API 设计)与上面的幻灯片不同。如果可能的话,设置 Apollo Server、Apollo Client 以及 Playground 似乎需要一定量的配置。

zor*_*404 0

AFAIK 该@export指令仍然不受支持。

考虑到 GraphQL 的现有功能已经是专门为支持这种批处理操作而设计的,我怀疑它是否会很快投入使用。

以下是您的示例使用良好的旧 GraphQL 模式的样子:

query {
  feed {
    stories {
      id
      actor
      message
      comments {
        actor
        messages
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

恕我直言,经典模式看起来比有两个单独的查询要干净得多,您可能需要在前端手动合并两个查询的结果。

如果您绝对无法将这些子字段添加到您的架构中,那么您可以考虑创建按顺序执行多个 GraphQL 操作的 REST 端点。
但这确实违背了 GraphQL 的原则。

附带说明一下:如果您对 GraphQL 足够熟悉,那么添加自定义指令并添加对这种新型批量操作的支持可能并不难@export,但我不认为人们对此有太多兴趣。