GraphQL - 在进行批量查询时使用别名与使用多个查询对象的区别

GraphQL - Difference between using alias versus multiple query objects when doing batch queries

我是 GraphQL 的新手,所以如果我在需要的地方错了,请纠正我。我想知道在单个请求中执行批量查询的最佳方式或最合适的方式是什么。我见过这样的例子:

[
  {
    query: "query(param1)"
  },
  {
    query: "query(param2)"
  }
]

或者使用别名完成同样事情的例子:

query {
  alias1: resolver1(param1)
  alias2: resolver2(param2)
}

在我看来,我认为别名是更合适的选项,因为它是单个查询,并且在该查询中我请求具有不同参数的数据。那么,在上述两个选项之间,哪个选项更适合在 GraphQL 中执行批量查询,为什么?谢谢!

并非所有库都支持通过将批量操作发送到服务器来进行批量操作。这不是 GraphQL 的特性,而只是一些服务器库支持的便利特性。另一方面,所有 GraphQL 服务器都支持在单个操作中包含多个根级字段。因此,如果您预计您正在查询的后端将来可能会发生变化,您可能希望使用选项 #2 而不是选项 #1,以避免将来可能不得不重构您的代码。

另一方面,批处理通常是可取的,因为它允许您混合操作类型。虽然您可以在单个操作中包含任意数量的根级字段,但一次只能执行一个操作——这意味着您不能将查询和变更与选项 #2 混合使用。如果这是你需要做的事情,批处理是在单个请求中实现它的唯一方法(假设你的服务器支持它)。