graphql - GraphQL 类型强制
问题描述
我目前正在更新一些与 GraphQL 单元测试相关的文档,我遇到了这句话:
“GraphQL 在幕后做了一些类型强制。我们需要在我们的模拟数据中模仿这种类型强制。”
“一个例子是它将位转换为布尔值。当从 B2 添加包含位的模拟数据时,这些应在模拟数据文件中更改为布尔值,以便单元测试按预期运行。”
不幸的是,最初写这篇文章的人已经离开了我们的公司,我知道 GraphQL 进行了某种类型的强制,但我很想知道为什么会这样做?特别是在结果强制期间。有人知道这意味着什么吗?
解决方案
从规格:
GraphQL 服务器在准备给定标量类型的字段时,必须通过强制值或在无法强制值或强制可能导致数据丢失时产生字段错误来维护标量类型描述的协定。
GraphQL 服务可能决定允许将不同的内部类型强制为预期的返回类型。例如,当强制转换类型为 Int 的字段时,布尔真值可能会产生 1,或者字符串值“123”可能会被解析为 base-10 123。但是,如果无法在不丢失信息的情况下合理地执行内部类型强制,那么它必须引发字段错误。
由于 GraphQL 服务器的客户端无法观察到这种强制行为,因此强制的精确规则留给了实现。唯一的要求是服务器必须产生符合预期标量类型的值。
可以在它们各自的部分中找到特定于五个内置标量的其他规则。任何其他标量在这方面的表现如何由单个服务决定。
推荐阅读
- javascript - Javascript - 如何使用不在同一范围内的 onClick 事件侦听器清除回调内的 setInterval
- c# - ASP.NET Core 路由引擎混淆
- sql - MS Access 参数中的多个值
- cucumber - 黄瓜测试示例未运行
- qemu - QEMU:如何在没有 fpu 的情况下创建 486 VM
- mysql - MYSQL:如何根据另一个表中的数据选择列?
- c# - 比较两个大列表的最佳方法,C#
- python - Keras 批量标准化和样本权重
- excel - 如何在 react-export-excel 中设置单元格样式?
- flutter - 如何使用颤振和 Dio 为 POST 设置标题