[英]GraphQL API: mutation or query?
我正在開發一個 GraphQL API ,其中有一個導入功能,具有初步數據比較(現有數據和導入文件之間)和后續確認請求
目前的流量是:
query previewImport($data: String)
其中$data
是 base64 編碼的電子表格。 數據在后端解析,並在數據庫中插入帶有 guid 的記錄。 最后 API 返回電子表格中的數據和數據庫中的數據之間的差異結果,以及 guid。mutation confirmImport($guid: String)
並將更改保存在數據庫中。 所以我想知道: previewImport
應該是查詢還是突變? 從 API 消費者的角度來看,這絕對是一個查詢。 但是在后端數據庫中插入了一條記錄,盡管其唯一目的是在此后不久鏈接到 confirmImport 請求,然后將其刪除。
在 GQL Mutation 規范中,據說:
預計突變操作中的頂級字段會對底層數據系統產生副作用。
從技術上講,臨時記錄確實會影響數據系統。 但是在領域方面,它不會改變對應用程序很重要的實體,所以我仍然有點摸不着頭腦
我同意query previewImport
更直觀,前提是預覽操作是冪等的。
一個query
不僅建議“讀取,而不是寫入”,還建議“我可以整天無誤地調用它”。 另一方面, mutation
通常會持續更改並通知我是否嘗試重復相同的操作,無論是作為錯誤還是“已經處理,你這個白痴”響應。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.