用于突变的GraphQL查看器

用于突变的GraphQL查看器,graphql,graphql-js,Graphql,Graphql Js,拥有GraphQL变体的查看器是一种好的做法吗?从理论上讲,这对我来说是有意义的,因为如果你没有登录,某些突变终点应该是不可能的,等等 但当我在web上看到示例时,我只看到用于查询的GraphQL查看器的实现。对于突变,我没有看到查看器的任何实现。例如,GitHub API没有在其所有变体上都有一个查看器。对于变体或查询,viewer字段不是一个好的实践。这是Facebook开源之前遗留的GraphQL平台的一部分,它不允许在根查询字段上使用参数。这意味着所有字段都需要向下移动一级,位于view

拥有GraphQL变体的查看器是一种好的做法吗?从理论上讲,这对我来说是有意义的,因为如果你没有登录,某些突变终点应该是不可能的,等等


但当我在web上看到示例时,我只看到用于查询的GraphQL查看器的实现。对于突变,我没有看到查看器的任何实现。例如,GitHub API没有在其所有变体上都有一个查看器。

对于变体或查询,
viewer
字段不是一个好的实践。这是Facebook开源之前遗留的GraphQL平台的一部分,它不允许在根查询字段上使用参数。这意味着所有字段都需要向下移动一级,位于
viewer
下方

至少在JavaScript实现中,当前在GraphQL中进行身份验证的方法是基于HTTP头之类的内容获取用户数据并将其置于
上下文中,如下所述:

因此,没有理由为突变或查询执行查看器。大多数GraphQL客户端都不介意,但是如果您使用的是Relay 0.x,它继承了Facebook遗留的一些GraphQL限制,那么在查询中使用它是有意义的。希望继电器的未来版本将删除此要求


另一个来源,请阅读GraphQL的原始创建者之一Lee Byron。

我不同意使用
viewer
是不好的做法。许多现代应用程序中的大量数据与查看这些数据的用户的上下文密切相关。我的facebook朋友和你的不同。在这种情况下,使用根查看器字段可以方便地适当限制子查询的范围。像搜索之类的事情也常常和搜索对象的上下文联系在一起。您是否可以提供一些资源,Relay说查看器的概念只是因为遗留的原因才存在?在最近的GraphQL版本中,有一个“上下文”的概念,它是一个基本的东西,可以让您获得有关当前用户的信息。因此,在实际模式中没有必要将其作为字段。以下是GraphQL的创建者Lee Byron对此的评论: