簡體   English   中英

GraphQL API:突變還是查詢?

[英]GraphQL API: mutation or query?

我正在開發一個 GraphQL API ,其中有一個導入功能,具有初步數據比較(現有數據和導入文件之間)和后續確認請求

目前的流量是:

  1. API 消費者執行 GQL 查詢query previewImport($data: String)其中$data是 base64 編碼的電子表格。 數據在后端解析,並在數據庫中插入帶有 guid 的記錄。 最后 API 返回電子表格中的數據和數據庫中的數據之間的差異結果,以及 guid。
  2. 然后前端在看到比較(創建、更新、刪除)后要求用戶確認導入。 為此,對 API 進行請求mutation confirmImport($guid: String)並將更改保存在數據庫中。

所以我想知道: previewImport應該是查詢還是突變 從 API 消費者的角度來看,這絕對是一個查詢。 但是在后端數據庫插入了一條記錄,盡管其唯一目的是在此后不久鏈接到 confirmImport 請求,然后將其刪除。

在 GQL Mutation 規范中,據說:

預計突變操作中的頂級字段會對底層數據系統產生副作用。

從技術上講,臨時記錄確實會影響數據系統。 但是在領域方面,它不會改變對應用程序很重要的實體,所以我仍然有點摸不着頭腦

我同意query previewImport更直觀,前提是預覽操作是冪等的。

一個query不僅建議“讀取,而不是寫入”,還建議“我可以整天無誤地調用它”。 另一方面, mutation通常會持續更改並通知我是否嘗試重復相同的操作,無論是作為錯誤還是“已經處理,你這個白痴”響應。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM