首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

GraphQL在执行过程中会冗余地访问字段吗?

GraphQL在执行过程中不会冗余地访问字段。

GraphQL是一种用于API的查询语言和运行时环境,它允许客户端精确地指定需要的数据,并且只返回客户端请求的数据,避免了传统RESTful API中的过度获取或不足获取的问题。

在GraphQL中,客户端通过发送一个查询请求来获取所需的数据。这个查询请求包含了客户端需要的字段和相关参数。服务器端根据这个查询请求来执行相应的操作,包括获取数据、处理逻辑等。在执行过程中,GraphQL会根据查询请求中指定的字段来获取相应的数据,并将其返回给客户端。

由于GraphQL的查询请求是精确指定的,服务器端只会获取客户端请求的字段,而不会冗余地访问其他字段。这样可以减少网络传输的数据量,提高数据获取的效率。

总结起来,GraphQL在执行过程中不会冗余地访问字段,它通过精确的查询请求来获取客户端需要的数据,避免了传统API中的冗余数据获取问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

GraphQL 初体验,Node.js 构建 GraphQL API 指南

如果你不确定应用程序的需求以及将来如何存储数据,则 GraphQL 在这里也很有用。要修改查询,你只需要添加所需字段的名称,这极大简化了随着时间推移而发展你的应用程序的过程。...GraphQL 的类型功能会给查询过程提供严格的校验,你甚至可以尝试请求不存在的字段。...简而言之,它是识别给定用户是否有权查看某些数据的过程。我们可以想象一下这样的场景:经过认证的用户可以执行查询来获取自己的地址信息,但应该无法获取其他用户的地址。...除了字段的参数外,解析器还可以访问它的父节点,以及传入的特殊上下文值,这些值可以提供有关当前已认证用户的信息。...解析器中执行验证检查是很有诱惑力的,但随着模式的增长,这将成为一种难以维持的策略。 GraphQL 什么时候不合适? GraphQL 不能像 REST 一样精确地满足 HTTP 通信的需求。

8.3K40

GraphQL

绝大多数的Web内容都通过桌面电脑的Web浏览器来访问的,看起来一切都很美好 ?...让所有设备之间通信有了一套标准语言,简化了创建大型跨平台应用的过程GraphQL的话,图就变成了这样子: ?...然后执行curl http://localhost:3000/movie/1来获取第一个电影,第二个就curl http://localhost:3000/movie/2……以此类推 app.js可以看到我们用来获取页面需要的所有数据的方法...用GraphQL查询 用GraphQL的话,我们可以直接跳到最佳查询,通过一条简单直观的查询,一点不冗余地获取我们需要的所有信息: query MoviesAndActors { movies {...接口数量瞬间爆炸,不一致性越来越明显,版本控制越来越困难 GraphQL开发体验方面确实有过人之处。

1.5K40
  • GraphQL 快速搭建服务端 API

    这篇文章不是重点介绍 GraphQL 本身,就不展开讲了,如果想深入了解可以访问 graphql.org。...注意到两个映射类 LnCrew 和 LnStarship 内部其实什么都没做,当它们和数据表建立映射关系后查询出的实例中会自动填充上数据库表中定义的各字段。...比如现有一个查询星舰的语句不需要 crew 属性,那整个执行过程当中,都不会发生 Crew 那张表的 select 。这一点也是 GraphQL 带来的好处之一。...现在就可以通过 Flask 启动的主机地址和端口来访问 GraphQL 的服务了,假设 Flask 应用启 localhost:8080 上,那么只要为客户端配置一个入口: localhost:8080...同时开发者对于 SQLAlchemy 的 session 的生命周期、具体数据库查询语句的执行的掌握也可能变弱,造成一些潜在的性能问题。这点就需要我们开发、测试的时候多留心。

    2.5K30

    「web应用架构」有原则GraphQL

    不应该推测性地将字段添加到模式中。理想情况下,每个字段应该只响应消费者对附加功能的具体需求时添加,而设计的目的是最大限度地让其他有类似需求的消费者重用。 更新图形应该是一个连续的过程。...虽然经常讨论访问控制,但也需要注意需求控制,因为它在GraphQL的任何生产部署中都是至关重要的。允许用户不考虑成本执行任何可能的查询是错误的,因为用户没有能力管理它对生产系统的影响。...可以捕获关于图上执行的每个操作(读或写)的大量信息:哪些用户和应用程序执行了该操作、访问了哪些字段、实际执行操作的方式、如何执行操作,等等。这些资料非常宝贵,应当有系统地加以收集,供以后使用。...因为跟踪真正地捕获了一个图是如何被使用的,它们可以被用于广泛的用途: 了解是否可以删除废弃字段,或者是否可以删除仍在访问它的特定客户端,以及它们的重要性 根据实时的生产数据,实时地预测一个查询需要多长时间执行...根据API使用情况为合作伙伴生成发票,可以根据访问的特定字段或消耗的资源创建详细的成本模型 所有图形操作的跟踪应该集中一个中心位置,这样就有了一个权威的跟踪流。

    74410

    技术专题:API资产识别大揭秘(一)

    进行安全测试期间,测试人员可以利用流量恢复API资产来更全面地了解API的工作方式,以及对不同类型的数据和请求的处理。这个过程有助于发现API资产中隐藏的安全漏洞和风险。...GraphQL最常见的是通过 HTTP 来发送请求,那么如何通过 HTTP 来进行 GraphQL 通信呢?举个栗子,如何通过Get/Post方式来执行下面的GraphQL查询呢?...片段存储:解析之后,会对各类协议的特征字段以及参数接口进行片段式存储。对于各类参数结构究竟是如何实现解析以及片段式存储又具体表现怎样呢?...正因如此,GraphQL API相比于RESTful API,GraphQL 只用一个数据源就可以查询所有数据,所有的请求都可以访问一个服务端点;并且GraphQL 返回的结果响应准确地根据客户端的请求字段...除此之外,GraphQL 的操作类型可以是 query、mutation 或 subscription,它们分别代表了查询、变更和订阅,使用GraphQL API发送的请求中也必定包括这些操作类型的特征字段

    89520

    来试试Graphql

    有以下三种做法: 新开一个接口, 返回所需要的所有字段 请求增加一个 type ,用于区分场景,服务端根据不同 type 返回不同的字段 不管三七二十一, 原有接口上增加多的字段。...如果只是 1 个,2 个场景还好,但如果后期有 n 个场景,需要返回非常多的字段,这不仅会浪费带宽,客户端数据解析也会影响响应时间,从而影响用户体验。那让后台新增一个接口可以?...resolver 函数它接收 4 个参数 fieldName(obj, args, context, info) { result } // obj:解析程序字段上返回的结果的对象 // args...更多内容查看 resolver 文档[3] 然后我们 http://127.0.0.1:4000/graphql 或者客户端 GraphiQL 中测试 ?...Dataloader Dataloader 是 facebook 搞的一个 js 库,可以大幅降低数据库的访问频次,从而降低系统负载,经常在 Graphql 场景中使用。

    1.9K20

    超越 REST

    1Graphile 早期的 GraphQL 探索过程中,Netflix 的工程师意识到 Graphile 库可以将 PostgreSQL 数据库对象(表、视图和函数)作为 GraphQL API 来呈现...通过允许 GraphQL 客户端“所用权限”(“full access”)自动生成的 GraphQL 查询和 Graphile 生成的突变(在所有表和视图上公开的 CRUD 操作)来提高灵活性;然后开发过程的后期...另外,对这两个字段的描述都被显示在生成的 GraphQL 模式中。...因为这些请求是以本机代码运行在数据库上,所以我们可以通过适当地使用索引、去规范化、集群等来执行复杂的查询并获得高性能。...今日好文推荐 90亿美元Java纠纷案反转:安卓中复制的代码属于合理使用 Java 微服务能像 Go 一样快? 用Rust重写Linux内核,这可能? ---- InfoQ 读者交流群上线啦!

    3K20

    GraphQL 微服务架构中的实践

    这篇文章中,首先会简单介绍 GraphQL 是什么,它能够解决的问题;在这之后,我们会重点分析 GraphQL 微服务架构中的使用以及实践过程中遇到的棘手问题,最后作者将给出心中合理的 GraphQL...一个 PostConnection 中会存在多个 PostEdge 对象,其中的 cursor 就是我们用来做分页的字段,所有的 cursor其实都是 Base64 编码的字符串,这能够提醒调用方 cursor...,让它们进行自治,根据其业务需要判断请求者是否可以访问后者修改资源,而后者其实把整个鉴权的过程解耦了,内部的微服务无条件的信任来自 GraphQL 服务的请求并提供所有的服务。...,整个过程不需要手动介入,只有类型出现冲突时会执行相应的回调。...实现 GraphQL Stitcher 的过程中,需要格外注意不同服务之间类型冲突的情况,我们实现的过程中并没有支持类型冲突以及跨服务资源的问题,而是采用了覆盖的方式,这其实有很大的问题,内部的 GraphQL

    1.5K10

    GraphQL 微服务架构中的实践

    PostConnection 中会存在多个 PostEdge 对象,其中的 cursor 就是我们用来做分页的字段,所有的 cursor 其实都是 Base64 编码的字符串,这能够提醒调用方 cursor...进行路由的,GraphQL 其实帮助我们完成了解析查询树的过程,我们只需要对相应字段实现特定的 Resolver 处理返回的逻辑就可以了。...,整个过程不需要手动介入,只有类型出现冲突时会执行相应的回调。...PostConnection 中会存在多个 PostEdge 对象,其中的 cursor 就是我们用来做分页的字段,所有的 cursor 其实都是 Base64 编码的字符串,这能够提醒调用方 cursor...,整个过程不需要手动介入,只有类型出现冲突时会执行相应的回调。

    2.7K20

    为什么我使用 GraphQL 而放弃 REST API?

    一个有经验的团队中,你可以避免这些问题,但是你难道不希望一些问题已经软件方面得到解决?...但你真能负担得起在所有项目中都做到这样?当你的团队冲刺期间决定重命名或重新安排对象字段时,你能负担得起上线/api/v1.99端点的成本?...参见 GitHub REST API(至少不是头中传递 JSON)。 说到过滤,就有趣多了……需要按一个字段过滤?没问题,可能是/todos?...对一个稳定且广泛使用的 API 来说,这没什么大不了的,但是敏捷流程的开发过程中,这就比较糟糕了。文档单独存储意味着,它经常不会更新,特别是当更改是一个小的、但会破坏客户端的更改时。...通过像行级安全这样的高级 Postgres 特性,你可以通过编写少量 SQL 策略实现复杂的访问控制逻辑。

    2.3K30

    Now.sh: 最好的 Serverless Deployment Dashboard

    Serverless 的项目 一天 1000 次 invokes 用于小项目完全足够 部署 安装 Now cnpm install now --save-dev 客户端部署 部署整个文件夹, 然后就会 自动执行...npm start CLI 部署 首先 now login 登陆,然后项目根目录执行: now 就可以开始部署了 本地调试 now dev 如果遇到 yarn 无法找到的错误就可以 npm i...-g yarn 执行过程中会在本地安装模块到 node_modules 部署例子 node 部署 注意 node server 和纯 node 的部署不一样 { "version": 2,...graphQL // 将所有的路由定位到 index.js // 如果开启了多个端口那么就应该重定位一下 } 正常情况我们是 3000 建立 server 然后 4000 端口建立 graphQL...原本是 http://localhost:4000/graphql 访问 graphQL,进行 routes 设置之后就可以同一个端口或者 alias 访问到了 Troubleshooting

    39320

    Salesforce 构建可扩展 API 的旅程

    我们选择了使用应用容器,因为它可以物理机或 VM 上运行,一个操作系统实例能够支持多个容器,每个容器都在自己独立的执行环境中运行。...本例中,我们的 Query 类型提供了一个名为 getClassificationInsightsByUser 的字段,它接受 emailAddresses 参数。...该字段的解析器函数很可能会访问一个数据库,并构造和返回 ClassificationInsightByUser 对象的一个列表。...确保 API 的安全性 Salesforce,安全性是首要任务。我们的 API 仅供注册用户访问,而且他们只能访问有权限的数据。...在这个过程中,我们使用应用容器进行扩展,使用 GraphQL 和嵌入式 Jetty 确保高效和轻量级,并优先考虑了 API 的安全性。 今日好文推荐 “不搞职级、人人平等” 25 年后行不通了?

    1K10

    使用 GraphQL 和 Ballerina 操作多个数据源

    Bookstore 的数据库模式 可以 data.sql 文件中找到创建数据库、表和填充数据的 SQL 语句。如果将这些语句保存到一个文件中,请在数据库中执行以下命令。... Ballerina 中,记录是特定类型字段的集合。其中有命名的键,并定义了字段的类型。{|和|}分隔符表示这个记录类型只包含所描述的字段。...记录的字段被映射到 GraphQL 对象的字段,记录字段的类型被映射到 GraphQL 对应字段的类型。...在这个服务中,“BookDetails”是一个 final 的只读字段初始化后不能被赋值。 Ballerina GraphQL 服务中的资源可以有层级资源路径。...Ballerina GraphQL 服务 下一步是实现数据访问逻辑,也就是实现远程方法和资源方法。 完整的代码 bookservice.bal 中。服务的代码如下所示。

    2.4K20

    与我一起学习微服务架构设计模式8—外部API模式

    外部API的设计难题 Web应用在防火墙内部运行,它们通过高带宽、低延迟的局域网访问服务。其他客户端防火墙之外运行,通过较低带宽、较高延迟的互联网或移动网路访问。...执行GraphQL 使用GraphQL的主要好处是它的查询语言为客户端提供了对返回数据的令人难以置信的控制。客户端通过向服务器发出包含查询文档的请求来执行查询。...简单情况下,查询文档包含查询的名称,参数值及要返回结果的对象字段。 把模式连接到数据源 当GraphQL服务器执行查询时,必须从一个或多个数据存储中检索所请求的数据。...通过将解析函数附加到模式定义的对象类型字段,可以将GraphQL模式与数据源相关联。GraphQL通过调用解析器函数检索数据,以此实现API组合模式。...GraphQL通过递归调用Query文档中指定的字段解析器函数来执行查询。首先,它执行查询解析器,然后递归调用结果对象层次结构中字段的解析器。

    1.4K30

    这才是GraphQL最详细的解释

    GraphQL 是当今软件技术领域最大的流行语之一。但它究竟是什么?它是一种像 SQL 这样的查询语言?像 JVM 这样的执行引擎?像 XML 这样的规范? 只有回答了以上所有问题,才是正确答案!...这就是执行引擎(通常以GraphQL服务器的形式)的用武之地。 执行引擎 ? GraphQL执行引擎 GraphQL 执行引擎负责处理 GraphQL 查询并返回 JSON 响应。...客户端可以通过 user 查询请求 user 的所有字段GraphQL 服务器响应中仅返回那些字段。...解析器函数支持每个 GraphQL 类型的所有字段。...由于 GraphQL 提供的抽象能力,系统团队可以继续遵守 GraphQL API 级别的规范的前提下进行这些改进。 由于 GraphQL 相对较新,开发人员仍在不断的寻找更好的使用它的方案。

    96130

    什么是GraphQL?【Programming】

    它是一种类似SQL的查询语言?像JVM这样的执行引擎?像XML这样的规范? 如果你回答了以上所有的问题,那么你是正确的!...这就是执行引擎(通常采用GraphQL服务器的形式)发挥作用的地方。 执行引擎 image.png Graphql执行引擎负责处理GraphQL查询并返回JSON响应。...客户机可以通过用户查询请求用户的任何字段,而GraphQL服务器将在其响应中只返回这些字段。通过使用强类型模式,GraphQL服务器可以验证传入的查询,以确保它们基于已定义的模式是有效的。...一旦查询被确定为有效,解析器将对它进行GraphQL服务器处理。一个解析器函数回退每个GraphQL类型的每个字段。...由于GraphQL提供了抽象,因此系统团队可以进行这些更改,同时继续GraphQLAPI级别上遵守GraphQL的“合同”。

    90200
    领券