继电器兼容的GraphQL服务器中的所有节点都需要具有ID吗?

时间:2016-02-09 09:44:21

标签: relayjs graphql

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

一些例子:

获取应用程序的版本号:

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

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

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

      cpu{
         total,
         used
      }
   }
}

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

relay object identification spec表示所有对象都应具有标识。但是,在这种情况下,id的存在似乎是多余的。

继电器兼容的GraphQL服务器中的所有对象是否都需要一个id?

1 个答案:

答案 0 :(得分:1)

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

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