【问题标题】:GraphQL + Apollo requestsGraphQL + Apollo 请求
【发布时间】:2019-07-23 13:19:33
【问题描述】:

如果我有一个使用 GraphQL + Apollo + React 构建的应用程序,只是想知道我是否在页面上说 3 个组件,每个组件进行不同的查询,这是否意味着将从客户端发出 3 个请求到server 和 3 将被退回?当我收集 GraphQL 将 API 调用压缩为 1 个请求时,有点迷失了它的工作原理,但是在上述场景中,从客户端到服务器的请求,然后服务器返回到客户端,它是如何工作的?

【问题讨论】:

    标签: reactjs graphql apollo


    【解决方案1】:

    来自docs

    查询重复数据删除有助于减少通过网络发送的查询数量。默认情况下它是打开的,但可以通过将 queryDeduplication: false 传递给每个请求的上下文或使用 Apollo 客户端设置上的 defaultOptions 键来关闭它。如果打开,查询重复数据删除发生在查询到达网络层之前。如果许多组件显示相同的数据,但您不想从服务器多次获取该数据,则查询重复数据删除可能很有用。它通过将查询与当前正在运行的所有查询进行比较来工作。如果当前正在运行相同的查询,则新查询将映射到相同的 Promise 并在当前正在运行的查询返回时解决。

    换句话说,只要您没有将queryDeduplication 显式设置为false,Apollo 将跳过与任何正在进行的请求匹配的请求。

    虽然 GraphQL 提供了在同一个请求中发送多个查询的能力(并且 Apollo 支持这种能力),但编写这样的查询由您自己决定——GraphQL 不会自动为您执行此操作.为了使用 Apollo 将多个查询批处理成一个请求,您必须使用 apollo-link-batch-http

    【讨论】:

      猜你喜欢
      • 2019-07-26
      • 2018-11-02
      • 2018-10-21
      • 2017-03-16
      • 1970-01-01
      • 1970-01-01
      • 2021-05-07
      • 2021-11-22
      • 2020-01-15
      相关资源
      最近更新 更多