簡體   English   中英

1個服務端點與3個單獨的端點,用於在CRUD中創建/更新/刪除| 建築

[英]1 Service end-point vs 3 individual end-points for Create/Update/Delete in CRUD | Architecture

我對建立CRUD服務有疑問,我應該能夠從數據庫創建,更新,刪除和獲取記錄。

為了容易理解。 我將以一個公司的示例為例,我應該向該公司編寫服務以執行CRUD。 我應該添加一個員工,更新一個員工,刪除一個員工,獲取為公司工作的員工列表。

下面的對象將用作創建/更新/刪除的請求負載,而EmployeeDomainObject的列表將用作Get請求的響應

EmployeeDomainObject { "firstName": "string", "lastName": "string", "id": "string", "status": "ACTIVE" or "DELETE" or null }

  • 我應該使用2種服務嗎?
    • 1終點為獲取基於公司Id以獲取列表
    • 1個用於創建/更新/刪除的端點,該端點將EmployeeDomainObject接受為請求正文,並根據狀態相應地更新數據庫。
      • 如果請求的狀態為:null->新記錄ID將為null,則保存時將生成一個動態ID。
      • 如果請求的狀態為:“ ACTIVE”->根據ID更新記錄
      • 如果請求的狀態為:“刪除”->根據ID刪除記錄
  • 我應該使用4種服務嗎?
    • 1終點為獲取基於公司Id以獲取列表
    • 1個端點,用於創建基於EmployeeDomainObject創建雇員
    • 1個端點,用於“ 更新”以根據EmployeeDomainObject中的ID更新員工
    • 1個端點,用於Delete以根據EmployeeDomainObject中的ID刪除員工

服務的范圍和要求: 1.健壯性2.可維護性3.哪個更受服務驅動? 4.可擴展/可擴展

贊賞的答案

這實際上取決於您計划如何實施服務。 如果要使用諸如Spring之類的已建立框架,則很可能會使用4端點方法,並且沒有status字段,因為狀態將由HTTP動詞(GET / POST / PUT / DELETE)隱含。

您真正擁有的是RPC(遠程過程調用)。 status字段是要調用的“方法”。 在純REST將使用HTTP動詞的地方,RPC將使用這種類型的方法調用。 因此,如果您計划不使用框架從頭開始構建服務,則可以使用一個端點。 當您可以添加另一個status字段時,我看不到只有兩個端點:

EmployeeDomainObject 
{
   "firstName": "string",
   "lastName": "string",
   "id": "string",
   "status": "ACTIVE" or "DELETE" or "RETRIEVE" or null 
}

並使用POST。 它不是REST,但您不是在問它是否是良好的REST。

使用上面的命令沒有什么“錯誤”,特別是如果您要從頭開始構建服務(可能是資源受限等)。

端點只是客戶端與服務交互的方式。 這些交互是通過4個REST樣式的終結點到達還是通過1個RPC樣式的POST到達都是無關緊要的。 客戶只是做它需要做的事情。

結果是對服務器的影響。 一個成熟的REST框架(例如Spring)將為您提供一個良好的開端,但將您綁定到4個端點。 如果您可以隨意設計服務器端,那么RPC樣式的方法就沒有錯。 您仍然可以在服務上記錄/審核/處理權限,但您可能需要自己編寫代碼。

如果您打算建立大型企業並雇用大量程序員,那么您可能希望順其自然,並使用4個REST風格的終結點和已建立的框架,以便從更廣泛的人才庫中進行招聘,而不是而不是在定制設計的系統上進行雇用和培訓。

暫無
暫無

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

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