当一次只能运行一个操作时,为什么要在graphql查询文档中发送多个操作?

当一次只能运行一个操作时,为什么要在graphql查询文档中发送多个操作?,graphql,Graphql,graphql规范提到,只要选择要运行的操作,就可以在请求文档中发送多个操作: 要执行请求,如果文档定义了多个操作,则执行者必须有一个已解析的文档(如本规范“查询语言”部分中所定义)和一个要运行的选定操作名,否则该文档将只包含一个操作 在什么情况下,您会发送包含多个操作的文档?我只能假设这是为了允许在操作之间切换,而不必为每个操作创建单独的文档?我从graphql团队中找到了这个答案: 其用途有三: 在客户端文件中存储GraphQL文档通常很有用;为此,我们在iOS和Android上使用.gr

graphql规范提到,只要选择要运行的操作,就可以在请求文档中发送多个操作:

要执行请求,如果文档定义了多个操作,则执行者必须有一个已解析的文档(如本规范“查询语言”部分中所定义)和一个要运行的选定操作名,否则该文档将只包含一个操作


在什么情况下,您会发送包含多个操作的文档?我只能假设这是为了允许在操作之间切换,而不必为每个操作创建单独的文档?

我从graphql团队中找到了这个答案:

其用途有三:

  • 在客户端文件中存储GraphQL文档通常很有用;为此,我们在iOS和Android上使用.graphql文件。我们希望解析器也能处理这些文件(因此解析器是通用的),但是您可以(而且我们经常这样做)在一个文档中包含多个查询
  • 可以进行的一个优化(我相信我们将在将来更详细地讨论)是“持久化”文档;您将文档发送到为您存储文档的服务器,并为您提供一个标识符,这样您就不必每次都发送整个文档字符串。如果这样做,您可以发送一个包含所有查询的文档,然后通过网络传递文档ID+操作名称。这将优化从客户端发送到服务器的字节数
  • 可以为GraphQL编写一个“批处理”API,使用一个查询的结果作为另一个查询的参数。我们仍在计算确切的细节,但如果这样做,在一个文档中指定多个查询将非常有用;您需要指定在开始时要运行哪一个以及它们之间的关系
  • 参考: