有时候,您需要您的API来执行不涉及检索或处理数据的操作。例如,发送“忘记密码”电子邮件或与第三方API交互。
Apollo(或GraphQL本身)是否有推荐的方法来实现这一目标?
如果没有,有什么解决方案可以做到这一点,同时又能利用Apollo的优势(例如模式/类型检查)?
答案 0 :(得分:4)
查询和变异之间的区别是mostly academic。虽然规范将突变定义为“先写入然后取数据”,但您可以将查询视为idempotent and side-effect free,而突变则是任何事情,但不是。从这个意义上讲,密码重置请求可能不会更改数据库中的任何内容,但是肯定没有副作用,因此应该是一个突变。
根据经验,任何可以描述为动作的内容(“创建”,“更新”,“重置”,“发送”等)都可能是突变。这也影响了客户端的使用,因为许多客户端(即Apollo)期望使用的变异与查询客户端的方式不同。