我不太确定我该搜索的措词。
我有一个GraphQL模式,该模式使用graphql-link-schema
包装一组服务,以在客户端执行数据解析。该架构旨在针对单独的参考架构进行构建。如何以编程方式验证我的实现是否与参考匹配?
对于奖励积分,是否可以确定某个模式是否是另一个模式的超集?
预先感谢(:
答案 0 :(得分:1)
这是一个有趣的用例,但是还不清楚这样的验证如何工作。是什么导致验证失败?两种架构之间有什么区别?多余的类型?现有类型的额外字段?返回类型的差异?参数或参数类型不同?
但是,根据对上述问题的回答,您可以使用here可用的实用程序功能将自己的验证功能拼凑在一起。在主要findBreakingChanges
函数之外,该模块中还提供了一些实用程序函数:
findRemovedTypes
findTypesThatChangedKind
findFieldsThatChangedTypeOnObjectOrInterfaceTypes
findFieldsThatChangedTypeOnInputObjectTypes
findTypesRemovedFromUnions
findValuesRemovedFromEnums
findArgChanges
findInterfacesRemovedFromObjectTypes
但是,如果您有可用的参考或基础架构,而不是对其进行验证,则还可以在构建第二个架构时考虑对其进行扩展。这样,您可以有效地保证第二个模式与第一个模式匹配,除非您有意偏离第二个模式(通过扩展现有类型等)。您可以使用extendSchema进行相对简单的更改,或者使用诸如graphql-tool的mergeSchemas进行更复杂的更改。