在REST API中支援批次操作的幾個不同方法 - mscharhag

banq發表於2021-05-11

批次(或批處理)操作用於在單個請求中對多個資源執行操作。這可以幫助減少網路開銷。為了提高網路效能,通常最好發出更少的請求,而不是發出更少的資料的更多請求。
但是,在新增對批次操作的支援之前,如果確實需要此功能,則應三思而後行。通常,網路效能並不是限制請求吞吐量的因素。您還應該考慮使用HTTP流水線之類的技術來提高效能。
在執行批次操作時,我們應該區分兩種不同的情況:
  • 批次操作將一個請求中的許多任意操作組合在一起。例如:刪除ID為42的產品,建立一個名為John的使用者,並檢索昨天建立的所有產品評論。
  • 對相同型別的不同資源執行一項操作的批次操作。例如:刪除ID為23、45、67和89的產品。

請注意,所示的解決方案可能看起來不太像REST。通常,批次操作與REST約束並不十分相容,因為我們只需要一個請求就可以在不同的資源上進行操作。因此,根本沒有真正的REST解決方案。
本文研究了構建批次API的幾個不同方法。所有方法都有不同的優點和缺點。沒有唯一正確的方法,因為它始終取決於您的要求。
如果需要在單個請求中提交多個操作的通用方法,則可以使用自定義JSON格式。或者,您可以使用多部分內容型別將多個請求合併為一個請求。
您還可以拿出單獨的資源來表達所需的操作。如果您只有一個或幾個需要支援批次操作的操作,這通常是最簡單,最實用的方法。
在所有情況下,您都應該評估批次操作是否真正產生了預期的效能提升。否則,批次操作的額外複雜性通常是不值得的。
詳細點選標題見原文。

相關文章