首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

GraphQL-Calculator 开源:基于指令和表达式实现查询的动态计算

原生指令 @include 和 @skip 只支持 bool 类型的变量,但真实的业务场景判断规则更加复杂,往往存在逻辑计算。...作为 GraphQL 官方指定的能力拓展机制,GraphQL 生态的框架对指令有更好的支持,基于指令的能力拓展和框架本身也具有更好的兼容性。...如何使用指令 指令主要是对 GraphQL 语言元素的信息描述,例如使用 @include 指令描述是否请求某个字段: query userInfo($userId:Int, $needEmail...自营正品':'三方好货'") } }} 控制流  问题简述 GraphQL 内置了 @skip 和 @include 来决定是否请求指定字段,其参数为 bool 类型。...定义了 @includeBy 指令判断是否请求指定字段,该指令可理解为 GraphQL 内置指令 @include 的拓展版本,但起判断逻辑为表达式、表达式参数为所有请求变量。

1.1K20

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

指令(Directives)指令是独立于GraphQL server之外的一个附加功能。指令不会对结果的值产生影响,但是会影响哪些结果会被返回,也许还会影响这些结果是如何被执行的。...指令可以出现在查询的任何地方,但在这篇文章中我们只关注当前GrahpQL文档所描述的skip(忽略)和include(包括) 两个指令。... 你能在上文厨房水槽的栗子中使用指令`skip` 和 `include`。`include` 指令表示只有在 if 参数为 true 时才引入片段表示的字段。...`skip` 指令表示在 if 参数为 true 时忽略片段中的字段。由于指令的语法相当灵活,我们可以利用它来给GraphQL添加更多的特性,而不是使用语法解析或者引入更复杂的工具的方式。...指令(Directive): 在字段、片段或者查询中的一个注释,include 指令表示只有在 if 参数为 true 时才引入片段表示的字段。

2.8K20

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

GraphQL 的能力扩展机制 GraphQL 提供指令作为执行和校验能力的扩展机制。...GraphQL 原生指令只有@skip 、@include 、@deprecated 和@specifiedBy ,说明见 Type-System.Directives,提供的能力有限,不能满足业务计算所需...开源代码托管地址:https://github.com/graphql-calculator/graphql-calculator 指令分类 指令使用位置分为两类:可执行位 ExecutableDirectiveLocation...,包括加工、过滤、使用其他字段获取结果进行替换; 数据编排:将指定字段的获取结果作为全局可获取的上下文,为其他字段或参数的加工转换提供可依赖的数据; 控制流:@skip和@include拓展版本,通过表达式判断是否请求注解的字段或片断...GraphQL Calculator 指令的命名和语义参考了java.util.stream.Stream和 GraphQL 规范原生指令,易于理解和使用,例如@filter、@sort、@skipBy

1.2K20

安全地将 Netflix 迁移到 GraphQL

我们还可以通过联合指令GraphQL Shim 的字段实现与 Video API 进行交换。为了安全地启动第二阶段,我们使用了 Replay 测试和 Sticky Canaries。...Replay 测试框架利用 GraphQL 联合中提供的 @override 指令。该指令告诉 GraphQL 网关将请求路由到一个 GraphQL 服务器而不是另一个。...在第二阶段,我们建立了 VideoService,并定义了带有 @override 指令的相同 certificationRating 字段。...具有 @override 指令的相同字段的存在告知 GraphQL 网关将此字段的解析路由到新的 Video Service,而不是旧的 Shim Service。...优势 对两种 GraphQL 实现之间的一致性充满信心。 在数据由于过于急切的超时而丢失的情况下,能够进行调优配置。 测试了需要许多(未知)输入和难以直观判断正确性的业务逻辑。

13030
领券