当前位置: 首页 > 知识库问答 >
问题:

GraphQL+Apollo请求

端木皓君
2023-03-14

如果我有一个用GraphQL+Apollo+React构建的应用程序,我想知道如果我在页面上有3个组件,每个组件进行不同的查询,这是否意味着从客户端向服务器发出3个请求,并返回3个?GraphQL将API调用压缩成一个请求,但在上面的场景中,它是如何工作的,从客户端到服务器,然后服务器回到客户端?

共有1个答案

司寇凯
2023-03-14

从文档中:

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

换句话说,只要您没有显式地将querydeDuplication设置为false,如果请求匹配任何飞行中的请求,Apollo就会跳过发送请求。

虽然GraphQL提供了在同一个请求中发送多个查询的能力(Apollo支持这种能力),但要由您来编写这样一个查询--GraphQL不会自动为您完成这项工作。为了使用Apollo将多个查询批处理成单个请求,必须使用apollo-link-batch-http

 类似资料:
  • 我试图在react应用程序中使用GraphQL和Apollo从themovieDB中查询数据。我正在发送非常类似的请求,但只有一个似乎工作。我尝试将查询分离到单独的组件中,但这没有帮助,所以这不太可能与发送多个查询有关。“one_movie_by_id_query”触发错误“错误:网络错误:响应不成功:接收状态代码400”。以下是我调用查询的方式: 查询本身: 最后是GraphQL模式 我应该指出

  • firebase-firestore-graphql An example of a GraphQL setup with a Firebase Firestore backend. Uses Apollo Engine/Server 2.0 and deployed to Google App Engine. Initial setup npm init --yesnpm install apo

  • 我在Apollo中的GraphQL订阅遇到了麻烦。我想订阅关于主题的添加“透视图”(基本上是在帖子上添加评论),我很确定我已经正确地设置了服务器。客户才是给我带来麻烦的人。(如果这个问题看起来很熟悉,我以前问过它,以为我得到了答案,但没有去)。下面是我的订阅模式: 我也正确地连接了客户端,因为在我的终端中,我看到了“WebSocket connection Selected”消息。我被难倒的部分是

  • A React + Apollo + GraphQL GitHub Client Features React 16 with create-react-app Responsive React Router 4 Apollo with GitHub GraphQL API Queries and Mutations with render props Optimistic Updates Pag

  • 所有和任何建议将非常感谢!谢谢你! 发布http://localhost:3000/GraphQL 400(错误请求)[GraphQL错误]:消息:变量“$email”未定义。,位置:[object object],[object object],路径:未定义 [GraphQL错误]:消息:变量“$LocationCity”未定义。,位置:[object object],[object objec

  • High performance Next + React + GraphQL starter kit The purpose of this starter kit is not to be complete solution, but introduction for creating high performance websites with Next.js, React and Grap