用户登录

写查询的时候,之前我们用的都是简单的写法。如果使用完整的的写法,在查询里面,需要加上操作类型,还有一个操作的名称。

操作类型可以 query,mutation,或者 subscription。

比如这里我们做的是一个 query 类型的查询,所以它的操作类型可以设置成 query ,后面可以再加上一个操作的名称,这个名称我们可以随便定义,主要就是描述一下这个查询做的事情。比如 UserWithPosts。

执行一下这个查询,返回的是一个指定 id 的用户,还有这个用户发布的一组内容。

这个操作名称在调试应用的时候可能会有用。 打开浏览器开发者工具,打开 Newtwork 选项卡,可以先观察一下一个 GraphQL 请求。 选择 XHR。

执行一下,上面这个请求。

你会发现,请求的名字是 graphql,用的是 HTTP 方法默认是 POST。 选中这个请求,打开 Headers,浏览到 Request Payload, 这是这个请求带的数据,你会发现,里面有 operationName,它的值就是操作的名称。

在服务端这里我们可以获取到请求里带的操作名称,回到项目,打开 AppModule 模块,在这个模块里配置使用了 GraphQLModule 模块,给这个模块的 forRoot 方法的对象参数里面,再添加一个 context,它的值可以是个函数,函数接收一个对象参数,把对象里的 req 解构出来, req 就是请求,然后在这个方法里,可以用一个 console.log,输出 req.body 里的 operationName 这个属性的值,它就是有客户端那里查询的时候设置的一个操作名称。

回到浏览器,重新发送一下这个带操作名称的请求,再到运行项目开发服务的终端,检查一下,你会发现,这里输出了一个 UserWithPosts,它就是 GraphQL 服务器接收到的那个请求里带的操作名称。

Mutation

在做 Mutation 查询的时候,这个操作类型可以设置成 mutation,操作类型的后面可以再加上一个操作名称。 UpdateUserName,执行一下。

回到运行开发服务的终端,会输出刚刚做的查询里的操作名称。

Playground

这个 Playground 有个设置需要注意一下,现在它的这个 schema.polling.enable 选项我把它设置成了 false,如果设置成 true 的话, Payground 会每隔一段时间就请求一下服务端,得到 Schema 相关的数据。

在 Network 这里,你会发现,会不断的请求 graphql。

所以,暂时我们可以把这个选项的值设置成 false,关掉这个功能。

GraphQL 查询中的操作类型与操作名称《 企业应用架构:GraphQL 查询 》

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点