2013-04-07 74 views
0

我的數據模式看起來像什麼是訪問連接的資源不同的資源RESTful方式

User許多Transaction。無論UserTransaction在數據庫中不同的表
REST終點爲

使用者端點

GET /users/uuid # to get information about specific user 
PUT /users/uuid # update information of a specific user 

交易端點

GET /transactions/uuid # get a specific transaction 
GET /transactions/user_uuid # get all transactions of a specific user 
GET /transactions/user_uuid/yyyy # get all transactions of a specific user in year yyyy 
GET /transactions/user_uuid/yyyy/mm # get all transactions of a specific user in year yyyy, month mm 
GET /transactions/user_uuid/yyyy/mm/dd # get all transactions of a specific user in year yyyy, month mm and day dd 
  • 我的問題是由於transactions將始終附加User資源,對於它們有不同的端點是否有意義?
  • 建議用戶訪問交易的建議是什麼?上面貼的那個?或像
GET /users/uuid/transactions # all transactions for a user 
GET /users/uuid/transactions/yyyy # all transactions for a user for year yyyy 
GET /users/uuid/transactions/yyyy/mm # all transactions for a user for year yyyy, month mm 
GET /users/uuid/transactions/yyyy/mm/dd # all transactions for a user for year yyyy, month mm and day dd 

我很困惑在這一刻爲哪一個更好。

謝謝

+0

這真的取決於你的需求 – lucemia 2013-04-07 15:22:12

+0

沒有對什麼東西是「REST風格的」沒有真正的定義意義。因此,我們不能說這些選項中的哪一個是「更好」的。當你試圖客觀地進入這樣的討論時,它最終會降臨到你的API最終將如何被使用。有時候,這並不重要。你甚至可能會同時使用這兩種方式。您擔心您錯過了可能會對您的產品造成負面影響的事情。然而,你的主要敵人,國際海事組織,是過度分析。 – 2013-04-07 20:22:36

+0

謝謝@MarkHildreth,我相信我會聽到你,我會盡力根據最佳用例公開API,並在稍後重構 – daydreamer 2013-04-07 20:48:37

回答

1

如果你總是在用戶的上下文中訪問transactions是有道理的我你的第二個方法,因爲像你說的和用戶有很多transactions,與第一種方法的URL設計可以相當混亂因爲它不清楚日期部分引用transactions而不是用戶資源。如果您想閱讀所有用戶的所有transactions另一方面,可以讓你有兩個端點transactions

GET /transactions/ # reads all transactions for all users 
GET /transactions/yyyy # reads all trasnsaction for all users with date 
GET /users/uuid/transactions # reads all transaction for a particular user 
GET /users/uuid/transactions/yyyy # reads all transactions for a particular user with date   
+0

謝謝@Pitxon,我想你在這裏,我應該從第二種方法開始,因爲它更有意義根據現在的訴訟案件 – daydreamer 2013-04-07 20:50:21