2014-05-17 35 views
0

我正在處理Rest api。我有一個設計問題需要你的建議。目前我有一個資源可以通過它的id請求並返回單個對象,也可以通過用戶id請求並返回多個對象。以下是我使用的網址示例:需要關於寧靜API設計的建議

1. http://myurl/resource/id 
2. http://myurl/resources/user_id 

有人建議不要在網址中使用複數形式。但就我而言,如果我不使用複數形式的資源,則無法區分這兩種情況。

有什麼想法?由於

+1

您應該根據返回的資源類型區分它們。看起來你有一些項目可以與用戶建立多對一的關係。在這種情況下,我會使用'http:// myurl/items/{item_id}'和'http:// myurl/users/{user_id}/items',其中大括號中的部分是可以是改變了,其他部分都修好了。沒有一個具體的例子說明你正在談論什麼樣的資源,這很難說是否有意義。 – toniedzwiedz

+1

您可以使用任何您喜歡的名稱作爲「ResourcesbyUser」。在你的情況下,它將是** http:// myurl/resourcesbyuser/user_id ** – Janty

回答

0

使用過濾參數:

http://myurl/resources/{id} // returns a resource with the given id 
http://myurl/resources?userId={userId} // return all resources for a given user 

您可以返回400如果userId濾波器參數未指定,或者只是返回的所有資源。我會傾向於後者,除非有理由不這樣做。

收集資源優選具有複數名稱,如資源而不是資源。你絕對不想擁有兩個資源,一個單數,一個複數 - 它會混淆你的最終用戶,這是API設計中的一個主要罪過。

湯姆的建議,在上面的評論中,也可能是合理的,這取決於實際的資源是什麼。