中继兼容的 GraphQL 服务器中的所有节点都需要有一个 id



我正在构建一个中继兼容的 GraphQL 服务器,其中某些类型将只存在 1 个。

举几个例子:

获取应用程序的版本号:

query version {
  version {
     version,
     buildDate,
     builtBy
  }  
}

获取当前资源使用情况(为简单起见,服务器仅发送请求时测量的读数):

query usage {
   resource {
      memory{
         total,
         used
      },
      cpu{
         total,
         used
      }
   }
}

在上述所有示例中,只有 versionresourcememorycpu 中的 1 个可以存在。

中继对象标识规范指出,所有对象都应具有标识。但是,在这种情况下,id的存在似乎是多余的。

中继兼容的 GraphQL 服务器中的所有对象是否绝对需要 id?

根据桑格利亚汽酒的经验,没有。但是,如果您对没有 ID 的对象执行更改,中继将发出错误消息,因为它将无法仅查询该单个对象的更改。

请注意,ID 是提供给客户端的不透明字符串。在您的情况下,保持合规的最简单方法可能是仅对值的类型进行 base64 编码,例如 id = base64_encode('version')等。

相关内容

  • 没有找到相关文章

最新更新