既不是突变也不是查询的 Apollo/GraphQL 操作

twi*_*wiz 1 apollo graphql apollo-server

有时,您需要 API 来执行不涉及检索或操作数据的操作。例如,发送“忘记密码”电子邮件或与第三方 API 交互。

Apollo(或 GraphQL 本身)是否有推荐的方法来实现这一点?

如果没有,有什么解决方案可以在仍然利用 Apollo 的好处(例如模式/类型检查)的同时实现这一点?

Dan*_*den 5

查询和突变之间的区别主要是学术上的。虽然规范将突变定义为“先写后取”,但您可以将查询视为幂等且无副作用,而突变是任何东西,好吧,不是。从这个意义上说,密码重置请求可能不会改变您数据库中的任何内容,但它肯定没有副作用,因此应该是一个突变。

根据经验,任何可以被描述为动作(“创建”、“更新”、“重置”、“发送”等)的东西都应该是一个突变。这也适用于客户端的使用,因为许多客户端(即 Apollo)期望突变的使用方式与客户端查询不同。