id 是否在 Graphql 查询中自动加密?
Are ids automitaclly encrypted in Graphql queries?
在我的数据库 (postgres) 中,我存储了 table 个事件,每个事件都有一个 "id" 列,它是一个 UUID 类型。但是当我发送一个 GraphQL 查询时,我收到的 id 不是字符串 UUID,而是看起来像一些加密版本。
如果该信息有帮助,我将在服务器端使用 Relay 和 Graphene。
query {
allEvents {
edges {
node {
id
}
}
}
}
{
"data": {
"allEvents": {
"edges": [
{
"node": {
"id": "RXZlbnQ6NzRkZTIxZmUtZWQyNy00OTg1LTk2NjEtNmU4ZDUzMGEwMjQ3"
}
}
]
}
}
}
一个常见的实施选择是对 ID 和游标值进行 base64 编码(您显示的查询遵循 Relay's pagination conventions)。如果您对问题中输入的字符串进行 base64 解码,您将再次找到一个 UUID。
在 GraphQL 级别,ID
只不过是一个不透明的 ID。 The spec 本身并没有说太多,只是它序列化为一个字符串,但可以接受一个数字作为输入。我使用过的大多数 application-oriented 服务器库也没有在 ID
周围放置太多特殊语义,就像它传入和传出的其他标量类型一样 as-is.
关于 Relay's object identification scheme 的文档的最后一段(node
top-level 查询)也强烈认为应用程序不应合成 ID
值,因此 base64 编码至少向消费者暗示该值不应该被理解。这里的 base64 编码不是通用的或 hard-coded 在 GraphQL 中,应用程序或库可以根据需要选择不同的 ID
方案。
在我的数据库 (postgres) 中,我存储了 table 个事件,每个事件都有一个 "id" 列,它是一个 UUID 类型。但是当我发送一个 GraphQL 查询时,我收到的 id 不是字符串 UUID,而是看起来像一些加密版本。
如果该信息有帮助,我将在服务器端使用 Relay 和 Graphene。
query {
allEvents {
edges {
node {
id
}
}
}
}
{
"data": {
"allEvents": {
"edges": [
{
"node": {
"id": "RXZlbnQ6NzRkZTIxZmUtZWQyNy00OTg1LTk2NjEtNmU4ZDUzMGEwMjQ3"
}
}
]
}
}
}
一个常见的实施选择是对 ID 和游标值进行 base64 编码(您显示的查询遵循 Relay's pagination conventions)。如果您对问题中输入的字符串进行 base64 解码,您将再次找到一个 UUID。
在 GraphQL 级别,ID
只不过是一个不透明的 ID。 The spec 本身并没有说太多,只是它序列化为一个字符串,但可以接受一个数字作为输入。我使用过的大多数 application-oriented 服务器库也没有在 ID
周围放置太多特殊语义,就像它传入和传出的其他标量类型一样 as-is.
关于 Relay's object identification scheme 的文档的最后一段(node
top-level 查询)也强烈认为应用程序不应合成 ID
值,因此 base64 编码至少向消费者暗示该值不应该被理解。这里的 base64 编码不是通用的或 hard-coded 在 GraphQL 中,应用程序或库可以根据需要选择不同的 ID
方案。