首页 > 解决方案 > 是否使用 GraphQL 查询或变异来发送外部消息

问题描述

我知道 GraphQL 突变是针对修改服务器状态的请求。如果请求不会更改任何服务器状态,但会向外部客户端或服务发送消息(如电子邮件),该怎么办?在设计 GraphQL API 时,哪个更适合这种类型的请求:查询还是突变?

GraphQL 的学习网站上,它给出了突变的解释:

在 REST 中,任何请求最终都可能对服务器造成一些副作用,但按照惯例,建议不要使用 GET 请求来修改数据。GraphQL 是类似的——从技术上讲,任何查询都可以实现来导致数据写入。但是,建立一个约定是有用的,即任何导致写入的操作都应该通过突变显式发送。

2018 年 6 月的 GraphQL 规范中,它定义了基本的 GraphQL 操作如下:

  • 查询 - 只读获取。
  • 突变 - 一个写入,然后是一个提取。
  • 订阅——一个长期存在的请求,它获取数据以响应源事件。

由于发送消息不会修改服务器状态,因此首先使用查询似乎是合适的。但是,对于Vue Apollo等 GraphQL 的前端框架,查询最自然地实现为自动更新、幂等、只读的数据获取。发送消息不是幂等的;我只想做一次。

标签: graphqlvue-apollo

解决方案


推荐阅读