Validation 对照另一个引用架构验证GraphQL架构

Validation 对照另一个引用架构验证GraphQL架构,validation,schema,graphql,specifications,Validation,Schema,Graphql,Specifications,我不太确定我应该在这个问题上寻找什么措辞 我有一个GraphQL模式,它使用GraphQL链接模式包装了一组服务,以在客户端执行数据解析。该模式旨在根据单独的参考模式构建。如何以编程方式验证我的实现是否与引用匹配 奖励积分-是否可以确定一个模式是否是另一个模式的超集 提前感谢(:这是一个有趣的用例,但不清楚这样的验证是如何工作的。是什么导致验证失败的?两个模式之间的任何差异?额外类型?现有类型上的额外字段?返回类型的差异?参数或参数类型的差异 但是,根据您对上述问题的回答,您可以使用可用的实用程

我不太确定我应该在这个问题上寻找什么措辞

我有一个GraphQL模式,它使用
GraphQL链接模式
包装了一组服务,以在客户端执行数据解析。该模式旨在根据单独的参考模式构建。如何以编程方式验证我的实现是否与引用匹配

奖励积分-是否可以确定一个模式是否是另一个模式的超集


提前感谢(:

这是一个有趣的用例,但不清楚这样的验证是如何工作的。是什么导致验证失败的?两个模式之间的任何差异?额外类型?现有类型上的额外字段?返回类型的差异?参数或参数类型的差异

但是,根据您对上述问题的回答,您可以使用可用的实用程序函数拼凑您自己的验证函数。除了主
findBreakingChanges
函数之外,该模块中的一些实用程序函数:

findRemovedTypes
findTypesThatChangedKind
findFieldsThatChangedTypeOnObjectOrInterfaceTypes
findFieldsThatChangedTypeOnInputObjectTypes
findTypesRemovedFromUnions
findValuesRemovedFromEnums
findArgChanges
findInterfacesRemovedFromObjectTypes

如果您有一个引用或基础架构可用,尽管不是对它进行验证,您也可以考虑在构建第二个模式时扩展它。这样做,您将有效地保证第二个模式与第一个模式相匹配,除非您有意偏离它的任何方式(通过扩展现有类型等)。。您可以使用相对简单的更改,或者类似于graphql工具的工具来进行更复杂的更改。

Nice。是的,这些看起来都是很有希望的途径。在这个特定的用例中,“验证”对我来说意味着“实现了引用架构的所有功能,因此配置为与引用系统对话的客户端可以在零代码更改的情况下与实现的系统对话"。因此,额外的类型-没什么大不了的。现有类型上的额外字段-也没什么大不了的。尽管存在差异,但这些都将被视为无效。我认为在这种情况下,只使用
findBreakingChanges
就足够了。这将有效地确保任何对引用架构有效的查询在与第二个模式。很好,这听起来是完成这项工作的完美工具。很高兴知道这是可能的!