2016-10-08 20 views
2

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

但是当我在网上看到例子时,我只能看到GraphQL查看器实现查询。对于突变,我没有看到任何观众的实施。例如,GitHub API在其所有突变之外没有查看器。

回答

8

对于突变或查询,viewer字段不是一个好的做法。这是Facebook之前遗留的GraphQL平台的一部分,它在开源之前不支持根查询字段的参数。这意味着所有的字段都需要向下移动一级,低于viewer

目前的方式做AUTH在GraphQL,在JavaScript实现至少,是基于什么样的HTTP头获取用户数据,并把它放在context,这里提到:http://graphql.org/learn/authorization/

因此,没有理由为观察者做突变或查询。大多数GraphQL客户端并不介意,但是在查询中使用它的一种情况是,如果您使用Relay 0.x,它继承了Facebook的一些传统GraphQL限制。希望未来版本的Relay可以消除这个要求。

欲了解更多信息,请阅读来自Lee Byron的this comment,这是GraphQL的原创者之一。

+0

我不会同意使用'viewer'是不好的做法。许多现代应用程序中的大量数据与谁在查看此数据的环境密切相关。例如。我的脸书朋友和你不一样。在这种情况下,拥有根查看器字段会很方便,这将会正确限制子查询的范围。像搜索等事情也经常与谁搜索的背景相关联。您能否提供一些资源,在哪里,继电器说观众的概念仅仅是因为传统原因? – pie6k

+0

在更近期的GraphQL版本中,有一个“上下文”的概念,它是一个让您获取有关当前用户信息的基础知识。因此,没有必要将它作为实际模式中的字段。 – stubailo

+0

这是来自GraphQL创建者Lee Byron的评论:https://github.com/lucasbento/graphql-pokemon/issues/1#issue-184547046 – stubailo