【发布时间】:2022-01-13 10:58:43
【问题描述】:
我正在开发一个 GraphQL API,其中有一个带有初步数据比较(现有数据和导入文件之间)和后续确认请求的导入功能
目前的流程是:
- API 使用者执行 GQL 查询
query previewImport($data: String),其中$data是 base64 编码的电子表格。数据在后端解析,并在数据库中插入带有 guid 的记录。最后,API 返回电子表格中的数据和数据库中的数据以及 guid 之间的差异结果。 - 然后前端在看到比较(创建、更新、删除)后要求用户确认导入。为此,向 API 发出请求
mutation confirmImport($guid: String),并将更改保存在数据库中。
所以我想知道:previewImport 应该是 query 还是 mutation? 从 API 使用者的角度来看,它绝对是一个查询。但是在后端数据库中插入了一条记录,尽管其唯一目的是在此后不久链接到 confirmImport 请求,然后将其删除。
在 GQL Mutation spec 中说:
预计突变操作中的顶级字段会对底层数据系统产生副作用。
从技术上讲,临时记录确实会影响数据系统。但在领域方面,它不会改变对应用程序很重要的实体,所以我仍然有点摸不着头脑
【问题讨论】: