graphql - 是否使用 GraphQL 查询或变异来发送外部消息
问题描述
我知道 GraphQL 突变是针对修改服务器状态的请求。如果请求不会更改任何服务器状态,但会向外部客户端或服务发送消息(如电子邮件),该怎么办?在设计 GraphQL API 时,哪个更适合这种类型的请求:查询还是突变?
在GraphQL 的学习网站上,它给出了突变的解释:
在 REST 中,任何请求最终都可能对服务器造成一些副作用,但按照惯例,建议不要使用 GET 请求来修改数据。GraphQL 是类似的——从技术上讲,任何查询都可以实现来导致数据写入。但是,建立一个约定是有用的,即任何导致写入的操作都应该通过突变显式发送。
在2018 年 6 月的 GraphQL 规范中,它定义了基本的 GraphQL 操作如下:
- 查询 - 只读获取。
- 突变 - 一个写入,然后是一个提取。
- 订阅——一个长期存在的请求,它获取数据以响应源事件。
由于发送消息不会修改服务器状态,因此首先使用查询似乎是合适的。但是,对于Vue Apollo等 GraphQL 的前端框架,查询最自然地实现为自动更新、幂等、只读的数据获取。发送消息不是幂等的;我只想做一次。
解决方案
推荐阅读
- sas - Proc Tabulate rowpctn 单独的列百分比
- spring - spring-cloud-config 应该包含什么文件
- excel - 空单元格导致类型错误,清除单元格修复
- python - 如何使用简洁的代码在 Python 中将 URL 参数转换为 JSON (dict)
- python - 为什么这个字符串连接格式不起作用?
- python - 具有大小到整数的字符串数字输入
- ruby - Netlify 部署“在“构建站点”阶段失败:构建脚本返回非零退出代码:42”
- accounting - 我如何测量每个视频聊天的时间以在 connectycube 中记账?
- oauth-2.0 - 授权流程是否应该同时为 Web 应用程序使用密钥和 PKCE
- python - 如何保存 Gensim LDA 模型列表?