首页 > 解决方案 > GraphQL 类型强制

问题描述

我目前正在更新一些与 GraphQL 单元测试相关的文档,我遇到了这句话:

“GraphQL 在幕后做了一些类型强制。我们需要在我们的模拟数据中模仿这种类型强制。”

“一个例子是它将转换为布尔值。当从 B2 添加包含位的模拟数据时,这些应在模拟数据文件中更改为布尔值,以便单元测试按预期运行。”

不幸的是,最初写这篇文章的人已经离开了我们的公司,我知道 GraphQL 进行了某种类型的强制,但我很想知道为什么会这样做?特别是在结果强制期间。有人知道这意味着什么吗?

标签: graphqlcoercion

解决方案


规格

GraphQL 服务器在准备给定标量类型的字段时,必须通过强制值或在无法强制值或强制可能导致数据丢失时产生字段错误来维护标量类型描述的协定。

GraphQL 服务可能决定允许将不同的内部类型强制为预期的返回类型。例如,当强制转换类型为 Int 的字段时,布尔真值可能会产生 1,或者字符串值“123”可能会被解析为 base-10 123。但是,如果无法在不丢失信息的情况下合理地执行内部类型强制,那么它必须引发字段错误。

由于 GraphQL 服务器的客户端无法观察到这种强制行为,因此强制的精确规则留给了实现。唯一的要求是服务器必须产生符合预期标量类型的值。

可以在它们各自的部分中找到特定于五个内置标量的其他规则。任何其他标量在这方面的表现如何由单个服务决定。


推荐阅读