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

GraphQL -何时对递归和规范化数据使用解析器或参数?

GraphQL是一种用于API开发的查询语言和运行时环境。它允许客户端精确地指定需要的数据,并且能够一次性获取多个资源的数据,从而减少了网络请求的次数和数据传输的大小。在GraphQL中,递归和规范化数据的解析器和参数的使用是根据具体的需求和场景来决定的。

递归在GraphQL中通常用于处理具有层级结构的数据,例如树状结构或嵌套的对象。当需要获取一个对象及其子对象的数据时,可以使用递归解析器来处理。递归解析器可以在查询中定义一个字段,并在该字段的解析器中再次调用自身来获取子对象的数据。这样可以通过一次查询获取整个层级结构的数据,提高了查询效率。

规范化数据是指将数据按照一定的规则进行组织和存储,以便在后续的查询中能够快速地获取和使用。当需要对数据进行规范化处理时,可以使用规范化数据的解析器或参数。规范化数据的解析器可以将数据按照指定的规则进行组织和处理,例如将数据存储在关系型数据库中或使用特定的数据结构进行存储。规范化数据的参数可以用于指定数据的组织方式和存储规则,例如指定数据的索引字段、关联关系等。

在实际应用中,递归和规范化数据的使用取决于具体的业务需求和数据结构。如果数据具有层级结构且需要一次性获取整个层级的数据,可以使用递归解析器。如果需要对数据进行规范化处理以提高查询效率和数据组织方式,可以使用规范化数据的解析器或参数。

对于GraphQL的推荐产品,腾讯云提供了云函数SCF(Serverless Cloud Function)和云开发(Tencent Cloud Base)等产品,可以帮助开发者快速构建和部署GraphQL API。具体产品介绍和链接如下:

  1. 云函数SCF:腾讯云函数(Serverless Cloud Function)是一种无服务器计算服务,可以帮助开发者在云端运行代码,无需关心服务器的管理和维护。通过云函数SCF,开发者可以轻松构建和部署GraphQL API,并实现递归和规范化数据的处理。了解更多:云函数SCF产品介绍
  2. 云开发:腾讯云开发(Tencent Cloud Base)是一种面向前端开发者的云端一体化开发平台,提供了丰富的后端服务和工具,包括数据库、存储、云函数等。通过云开发,开发者可以快速构建和部署GraphQL API,并实现递归和规范化数据的处理。了解更多:云开发产品介绍

通过使用腾讯云的相关产品,开发者可以更加便捷地构建和部署GraphQL API,并实现递归和规范化数据的处理。

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

相关·内容

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

它可以由三部分组成: GraphQL模式:定义服务器端数据模型及其支持的查询 解析器函数:解析函数将模式的元素映射到各种后端服务。 代理类:代理类调用应用程序的服务。...执行GraphQL 使用GraphQL的主要好处是它的查询语言为客户端提供了返回数据的令人难以置信的控制。客户端通过向服务器发出包含查询文档的请求来执行查询。...简单情况下,查询文档包含查询的名称,参数值及要返回结果的对象字段。 把模式连接到数据源 当GraphQL服务器执行查询时,必须从一个多个数据存储中检索所请求的数据。...通过将解析函数附加到模式定义的对象类型字段,可以将GraphQL模式与数据源相关联。GraphQL通过调用解析器函数检索数据,以此实现API组合模式。...GraphQL通过递归调用Query文档中指定的字段解析器函数来执行查询。首先,它执行查询解析器,然后递归调用结果对象层次结构中字段的解析器

1.4K30

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

考虑一个使用 API 连接到远程数据库的 Sass 应用程序。你想要呈现用户的个人资料页面,你可能需要进行一次 API GET 调用,以获取有关用户的信息,例如用户名电子邮件。...就像 REST API 可能会使用 JSON 模式一样,GraphQL 使用 SDL Schema 定义语言来定义它的模式,这是一种描述 GraphQL API 可用的所有对象字段的幂等方式。...(顺便说一下,GraphQL 模式不仅有对象,字段标量类型,还有更多,你也可以合并接口,联合参数以构建更复杂的模型,但本文中不会介绍)。...另一部分涉及实际获取数据,这是通过使用解析器完成的,解析器是一个返回字段基础值的函数。 让我们看一下如何在 Node.js 中实现解析器。...随着应用程序的成长变化,它们的 API 也会随之变化,很可能需要删除修改 GraphQL 字段对象。

8.3K40

Coursera 的 GraphQL 之旅

为 REST 微服务后端添加 GraphQL Coursera 的客户端开发人员钟情于 GraphQL 的灵活性,类型安全性良好的社区支持,我们 GraphQL 的喜爱众~所~周~知。...如果你在微服务架构中有多个数据源,那么问题就在于它们何时同步,而不是是否会同步。...接下来,我们利用之前解析器的大部分逻辑,简单地定义了 GraphQL 查询 REST 请求之间的转换,并且能够生成一个功能完善的 GraphQL 服务器,时间不超过五分钟。...得益于 GraphQL 额外提供的类型安全检查,开发人员更容易检测数据编写查询,我们的站点更加可靠,并且使用 GraphQL 加载数据的页面运行得更快。...尽管我们的前端开发人员不得不学习如何使用 GraphQL,但我们不需要重写任何后端 API 运行复杂的迁移流程才能使用 GraphQL——开发人员创建新的项目可以直接使用

1.2K40

PayPal大规模采用GraphQL的探索实践

由于 REST API 中的服务器决定了数据的形状,我们的 UI 团队花费了大量时间在客户端过滤和解析数据,通常使用诸如 Redux 之类的库来格式化存储数据。...有时,新版本中的文档参数会发生更改。有了 GraphQL,我们可以发送更新,客户端不再需要担心版本的更新。...使用 GraphQL,我们可以获得字段级的检测,并清楚了解哪个解析器花了多长时间、常见错误以及调用了哪些字段。这个字段级检测有助于智能地弃用不再使用的字段。...如果我们遗漏了一个参数,我们将返回文档并再次搜寻这个参数。这使得使用 API 变得比较困难耗时。...在它发展之后,我们通过添加内部插件中间件来提供支持,以规范化错误处理、检测减少内部网络聊天,但我们希望能够更快地构建支持。 我们单图方案的采用速度很慢。

3K20

Salesforce 构建可扩展 API 的旅程

GraphLQ 支持内省(introspection),所以模式定义可以通过各种工具进行共享下载,如 GraphiQL、GraphQL-playground cli 工具。...简单来讲,解析器就是由开发人员提供的一个函数,用来解析模式中定义的每个字段并从配置的资源(如数据库、其他 API 缓存等)中返回值。...该字段的解析器函数很可能会访问一个数据库,并构造返回 ClassificationInsightByUser 对象的一个列表。...graphQL执行查询 // 它将会调用解析器来获取数据并且只返回请求的数据 val executionResult = graphQL.execute(executionInput) //...在这个过程中,我们使用应用容器进行扩展,使用 GraphQL 嵌入式 Jetty 确保高效轻量级,并优先考虑了 API 的安全性。 今日好文推荐 “不搞职级、人人平等” 25 年后行不通了?

1K10

GraphQL 名词 101:解析 GraphQL 的查询语法》【译】

使用GraphQL语言定义的一个多个操作或者数据片段,类型是字符串。...在你的查询中,根节点字段的处理最底层字段应该是一样的。 参数(Arguments):一组与特定字段关联的键值。这些参数会跟它们相关的字段一起被传递到服务器端执行,并影响服务器字段的处理方式。...选择集(selection set)是一个会在GraphQL 文档中经常出现的概念,它赋予了GraphQL递归的特性,允许你获取嵌套形式的数据。...指令参数(Directive arguments): 与字段参数类似,只不过它们是被执行引擎处理,而不是传递给字段解析器(field resolver)。...总结GraphQL 是在应用层业务数据模型的抽象,是对数据请求定制的 DSQL,它解除了接口和数据之间的绑定,业务数据结构做了抽象整理,业务逻辑中的数据依赖于底层数据库结构,并且可以由具体业务场景来定制

2.9K20

GraphQL在现代Web应用中的应用与优势

查询结构:字段参数查询结构由字段参数组成。在上面的查询示例中,user是字段,idemail是user字段的子字段。参数如id: 1用于定制查询。4....下面展示如何使用一个自定义的@auth指令来控制访问权限。首先,假设我们定义了一个@auth指令,用于限制某些字段的访问,要求用户必须登录。...GraphQL 高级应用1. 分页使用GraphQL Cursor-based分页,以提高性能用户体验。...复杂查询优化利用GraphQL的字段解析器数据加载器进行性能优化。...更好的API设计:强类型系统确保了数据的一致性正确性,使得API更加易于理解维护。客户端控制:客户端可以决定获取多少数据何时获取,提高了用户体验。

6210

实践微服务,第14部分:GraphQL

3.1模式,类型字段 模式定义了可以在GraphQL查询中使用的类型字段。GraphQL不受任何特定的DSL编程语言的束缚。...下面的解析函数已获取的数据(accounts)进行操作,在指定了如下内容时使用“eventName”参数每个项目的“events”进行过滤查询: "events": &graphql.Field...4.解析器的实现测试 那么,现在我们已经将模式放在一起了,我们如何将底层数据模型绑定到在“解析器参数中声明的解析函数?...“test”实现使用一个硬编码的Account对象的切片(slice),并在匹配任一参数时返回。 使用解析器实现只是在调用代码提供的内容。...我们首先指定一个GraphQL查询为一组多行字符串。查询使用了变量、字段选择传递给quoteevents子字段的参数

2.5K40

防止你的GraphQL API被恶意查询

(尽管DataLoader可能会缓解数据库压力,但网络处理压力不会) 我们没有将第一个参数的类型设置为Int(允许任意数量),而是使用graphql-input-number创建了一个自定义标量,该标量将最大值限制为...然而,它可能会提取数以万计的记录,这意味着它在数据库,服务器网络上是最为严重的情况,这是最糟糕的情况。...我们使用graphql-cost-analysis进行分析,因为我们最快的解析器(20μs)最慢的解析器(10s +)之间存在很大差异,所以我们需要从中获得控制。 ...也就是说,也许graphql-validation-complexity你来说已经足够了,试试吧! 它的工作方式是指定解析特定字段类型的相对成本。 ...我通过Apollo Engine公开的性能跟踪数据确定了某些解析器的复杂程度。 我看了整个模式,并根据p99服务时间分配了一个值。

1.8K10

GraphQL 的入门指南

自从现代 Web 出现以来,构建 Api 并不像听起来那么困难,但是学习理解 Api 才是比较难。开发人员是大多数据使用你的 API 来构建某些内容或仅使用数据。...它为我们提供了同一个端,对于同一个 API,没有版本2版本3。给 GraphQL API 添加字段类型而无需影响现有查询,老旧字段可以废弃,从工具中隐藏。...这是 GraphQL 的基本介绍——为什么它这么强大,为什么它现在这么流行。如果你想了解更多关于它的信息,可以访问 GraphQL网站 学习。...} 如上所见,使用 GraphQL 中的查询,还可以传递参数。在本例中,要查询特定用户,所以要传递其用户的 ID。 但是,你可能想知道: GraphQL 如何知道从哪里获取数据?..., context, info) => { return users; } } }; export default resolvers; 现在,解释它是如何工作的: 每个查询解析器都有四个参数

2K30

GraphQL最突出的架构优势是什么?

在本文中,我们将讨论在未来现有的项目中使用 GraphQL 都将享受哪些架构优势。 1六边形架构 Alistair Cockburn 在“六边形架构”中提到,我们架构的最内层是应用程序域层。...在 Apollo Server 端,这些 API 调用将控制权转交给负责使用 ORM、原始 SQL、缓存、其他 RESTfulAPI 任何你想到的方法来获取数据解析器。...对于突变,解析器可以简单地将控制权传递给一个应用层用例。 将用例作为应用程序的重心后,从 REST 切换到 GraphQL同时支持两者)变得轻而易举。...请求形式 + 参数 的一个例子是,一个 /users/new 的 POST 请求过去只需要一个 email 一个 password,但现在它还需要一个 username 属性。...很多时候,我们 UI 所做的微小改动也会让我们替换掉组件,意识到我们错误地判断了数据需求,并且需要为一些组件添加更多字段。

2.1K20

graphql+koa2 前端bff层

promise.all,graphql可以更加便利的一次请求多个数据) (利于服务同学)他们可以专心开发微服务,不用再去管数据聚合这类事情 需要预定义类型,开发之前我们就能知道数据结构的基本样子 我们团队的后端使用的是...另外后端同学对于bff层其实不怎么感冒,因为数据聚合他们来说没什么含量,完全是前端同学服务。所以我们完全可以引入查询来接手后端同学的bff层。...QueryExportListParams是自己定义的参数类型,参数是输入类型必须要使用input关键字定义。...那么这里定义了类型实现在哪里,实现就在resolvers中,每个类型定义在resolver中都必须有解析器一一应。...在解析器中,他们的数据来源可以是任何地方,有可能是数据库,也可能是其他接口。我们这里是做中间层转发。所以直接使用axios转发到后端了。那么类型定义的参数就在这里获取使用

11110

ENS介绍

ENS还支持"反向解析",这使得将元数据(如规范化域名接口描述)与以太坊地址相关联成为可能。...ENS部署在以太坊主网络几个测试网络上。如果你使用ehereum-ens[1]javascript库终端用户应用程序,它将自动检测与你交互的网络并在该网络上部署ENS。...Namehash是一个递归过程,可以为任何有效的域名生成唯一的散列。...在使用Namehash进行散列之前,首先需要借助UTS-46标准域名进行规范化,确保域名中的字母与大小写无关,并禁止使用无效字符。...任何域名进行散列和解析的操作都必须首先其进行规范化,以确保所有用户获得ENS的一致性。 有关Namehash规范化如何工作的详细信息,请参阅有关域名处理[6]的文档。

2K40

GraphQL语法用于模式验证代码生成的新方法

GraphQL 你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。...使用GraphQL可以同时表达数据模型Schema携带该数据模型实体的消息格式,不需要分别定义。 NSA的主要目的是生成多种语言的代码模式,都是基于使用GraphQL的根定义。...在NSA中没有端点、订阅者发布者的引用。来自NSA的输出代码可以被任何自己管理传输方法的适配器使用。 InfoQ:你还考虑过其他什么设计,你怎么认为这是最好的方法?...可以根据职责将项目划分为多个repos,一个多个repos可以包含GraphQL及其类型扩展,这些类型扩展最终合并为一个模式,作为解析器输入。...另一个repo可以容纳解析器本身,它可以作为子模块连接一个多个代码生成repo。repos的第四层可以包含生成的代码,每种语言一个repos,以及所有必要的验证、测试打包逻辑。

18610

源码翻译 | MongoDB查询系统

查询优化 规范化重写:在尝试查看数据访问路径之前,需要对查询进行了一些简化、规范化“标准化”(canonicalization)。 索引标记:找出哪些索引可能对哪些查询谓词有所帮助。...这个简单的模型可以在执行构建用户查询请求的完整模型之前,用来检查请求。其中有些部分进行了延迟处理,例如该模型尚未验证输入的格式是否正确,并且尚未解析该阶段的表达式详细参数。...建立CanonicalQuery时,我们还会解析filter参数。过滤器由一个多个MatchExpression组成,这些MatchExpression使用手写代码进行递归解析。...解析器从过滤器BSON对象构建一个MatchExpressions树。解析器同时执行一些验证——例如,类型验证检查表达式参数的个数都在这里完成。...findAndModify 命令可以包含查找更新语法。查询部分被委派给查询解析器,如果这是更新(而不是删除),它将使用与update命令相同的解析器

4.8K40

什么是GraphQL?【Programming】

作为一种查询语言,GraphQL的核心优点之一是客户机应用程序只能请求它需要的数据,并期望以一致的方式返回数据。 那么返回GraphQL响应的是什么呢?...所有GraphQL服务器都由两个定义执行引擎的结构行为的核心组件组成:分别是模式和解析器。...一旦查询被确定为有效,解析器将对它进行GraphQL服务器处理。一个解析器函数回退每个GraphQL类型的每个字段。...尽管该规范GraphQL的语法、什么是有效的查询以及模式如何工作非常具体,但是它没有提供关于如何存储数据或者应该使用什么实现编程语言的GraphQL服务器的方向。...GraphQL已经开始改变公司构建客户端API应用程序的看法。

87500

一种不错的 BFF Microservice GraphQLREST API 层的开发方式

app 原则 没有定制代码包装器,因此任何开发人员都可以修改/替换任何模块实现 可作为参考的实现的设计模式 模块化,可替换即插即用代码 为业务 API 微服务平台开发提供入门 DevOps 准备了代码质量...基于 Apollo Server 2.0,带有 JWT 安全性、数据加载器(data loader) REST 数据源示例 通过 graphql-import 支持 GraphQL SDL 开发期间...访问 graphql playground 从 http://localhost:3000/graphiql 访问 graphiql tool GraphQL API 跟踪(可配置) 用于缓存批处理的数据加载器...cpu 日志的详细信息 安全 已使用示例 JWT 私钥公钥实现了基于 JWT 的安全性 REST API GraphQL 都添加了示例实现。...此处的区别在于,我们使用 @auth 指令根据角色来处理身份验证,而不是解析程序中的实现进行硬编码。这是更清蒸的方法,并且与解析器分离。

2.3K10

如何优雅地扩展GraphQL系统能力

指令的定义包括指令名称、参数列表、可使用位置是否可在同一位置重复使用等四个元素,用户可以使用指令描述自定义的执行行为校验规则。...判断条件结果为指令参数if。该指令可使用的位置有查询字段、命名片段内联片段,使用时将指令放置在要生效的元素后即可,示例如下: query myQuery($someTest: Boolean!)...GraphQL Calculator 参考了常见的编程概念指令进行定义: 字段加工:通过表达式结果字段进行加工转换; 数组处理:结果中的数组字段进行过滤、排序、去重; 参数转换:请求参数进行转换...,包括加工、过滤、使用其他字段获取结果进行替换; 数据编排:将指定字段的获取结果作为全局可获取的上下文,为其他字段参数的加工转换提供可依赖的数据; 控制流:@skip@include拓展版本,通过表达式判断是否请求注解的字段片断...on FIELD 实现指令 GraphQL 执行引擎获取查询结果可分为 fetch complete 两个阶段:fetch 阶段根据请求参数上下文获取该节点的原始数据,并分析该节点类型,递归获取其子孙节点的原始数据

1.2K20

这才是GraphQL最详细的解释

所有 GraphQL 服务器都由两个核心组件组成:模式和解析器,这两个组件分别定义了执行引擎的结构行为。...通过使用强类型模式,GraphQL 服务器可以验证传入的查询,以确保它们基于所定义的 schema。 一旦确定查询是有效的,则交给 GraphQL 服务器的解析器处理。...解析器函数支持每个 GraphQL 类型的所有字段。...虽然规范 GraphQL 的语法的说明非常的具体,例如什么是有效查询以及 schema 如何工作,但它没有规定怎样对数据进行存储 GraphQL 服务器应该用哪种编程语言实现。...GraphQL 正在改变构建客户端 API 应用的方式。把 GraphQL 作为自己技术堆栈的一部分,前端开发者可以自由地查询他们想要的数据,而后端开发者可以将客户端程序的需求与其后端系统架构分离。

94430
领券