使用ASP.NET Web API設計RESTful API時,我可以創建幾條路徑來檢索相同的數據。但我應該嗎?它被認爲是有用或混淆?深度對象路由的Web API最佳實踐
舉例來說,如果我有家長>兒童>項目的目標的關係,我可能有三條路線返回相同的單個項目:
- API /父母/:家長/孩子/:兒童/項目/:項目
- API /兒童/:兒童/項目/:項目
- API /項目/:項目
是否有用提供三條路線,還是應該僅限於簡單的避免混淆的路線?在這方面是否有最佳做法?
使用ASP.NET Web API設計RESTful API時,我可以創建幾條路徑來檢索相同的數據。但我應該嗎?它被認爲是有用或混淆?深度對象路由的Web API最佳實踐
舉例來說,如果我有家長>兒童>項目的目標的關係,我可能有三條路線返回相同的單個項目:
是否有用提供三條路線,還是應該僅限於簡單的避免混淆的路線?在這方面是否有最佳做法?
選擇使用哪些URI /路由是一個期望的目的,而不是內容。有沒有可能或可以建議用戶在沒有特定父母的情況下尋找孩子?如果是,則以單獨的根URI提供數據,如果不是,則通過要求用戶提供parentId來限制對子數據的訪問。
URI api/children
將返回所有孩子,不管他們的父母是誰,因此實現另一個目的而不是api/parents/:parentId/children
這將只返回parentId實例實際上有一個引用的孩子。結果將始終包含也可以使用api/children
獲取的數據,但它攜帶附加信息,因爲這些孩子「屬於」指定的父級。
在我看來,你所有的選擇都是有效的,因爲它們都有不同的目的。不過,我會避免使用不同的URI來達到同樣的目的。
如果用戶訪問最低級別的唯一標識符(:項目在你的情況下),那麼他們應該叫
API /項目/:項目
關於父的信息會多餘/無關。
我會去:
api/parents
api/parents/:parentid
api/parents/:parentid/children
api/children
api/children/:childid
api/children/:childid/items
api/items
api/items/:itemid
這使得有很大的意義。謝謝你的想法。 – Andy