2016-11-25 70 views
1

我正在使用一個使用微服務架構的項目。Rest訂單管理系統的API設計

有兩種服務:

  1. UserAPI:與用戶的所有事情到這裏來。
  2. OMS:所有與訂單相關的事情來這裏。

我需要根據以下過濾器提供的訂單:

  1. 按用戶ID
  2. 按日期
  3. 按狀態
  4. 通過用戶電話號碼
  5. 以上
  6. 組合

所以我創建一個n API

path/orders?date=12/11/2016&status=delivered&phone=1111111111 

現在我需要通過用戶ID爲用戶提供訂單。因此,這是很好的休息的設計:在現有的API的查詢參數

  1. 添加用戶ID喜歡path/orders?user_id=1
  2. 創建一個單獨的API路徑user/{user_id}/orders

回答

1

你的選擇兩者都OK。但是有不同的語義。

path/orders?user_id=1 

這是仰望命令。例如,訂單可以用來做一些統計分析。訂單可以通過不同的參數進行過濾,用戶標識就是其中之一。爲此(當訂單是主要興趣時)上面的URI策略是好的。

另一方面,您可能想查找一個用戶並查看他們的訂單。也許對他們的訂購習慣做一些分析。在這裏您需要用戶信息以及他們的訂單。這是你的第二個URI方案會更好

user/{user_id}/orders 

這些訂單是屬於給用戶。所以這是一個關係。這是這個URI方案效果更好的地方。

所以有兩個選項真的沒有錯。你只需要遵循每個應該使用的語義。