我正在构建一个中继兼容的 GraphQL 服务器,其中某些类型将只存在 1 个。
举几个例子:
获取应用程序的版本号:
query version {
version {
version,
buildDate,
builtBy
}
}
获取当前资源使用情况(为简单起见,服务器仅发送请求时测量的读数):
query usage {
resource {
memory{
total,
used
},
cpu{
total,
used
}
}
}
在上述所有示例中,只有 version
、resource
、memory
和 cpu
中的 1 个可以存在。
中继对象标识规范指出,所有对象都应具有标识。但是,在这种情况下,id
的存在似乎是多余的。
中继兼容的 GraphQL 服务器中的所有对象是否绝对需要 id?
根据桑格利亚汽酒的经验,没有。但是,如果您对没有 ID 的对象执行更改,中继将发出错误消息,因为它将无法仅查询该单个对象的更改。
请注意,ID 是提供给客户端的不透明字符串。在您的情况下,保持合规的最简单方法可能是仅对值的类型进行 base64 编码,例如 id = base64_encode('version')
等。