2011-02-09 103 views
2

我目前正在設計一個RESTful接口到現有的基礎設施,我正在努力與一個特定的方面。正確RESTful呼叫此資源

我們有用戶的集合,可以在/users 訪問和該集合的元素可以在/users/1

訪問但是每個用戶都有的朋友列表,它需要能夠訪問爲好。 users/1/friends是在這裏做的寧靜的電話嗎?由於只涉及一個用戶,因此它不符合自己的集合。

任何幫助,將不勝感激

回答

3

就RESTful設計而言,URI可以是任何你想要的。但是,爲了確保你的界面可以在REST的訪問,你需要做這樣的事情:

<user> 
    <name>Bob Smith</name> 
    <link rel="friends" href="/peeps/1/amigos" /> 
</user> 

通過增加間接的額外層,客戶端可以發現鏈接,好友列表,並沒有更重要的是客戶端的URI是什麼。只要你喜歡,你可以改變它。

URIs是服務器的實現細節,客戶端不應該與它們耦合。唯一的耦合應該在rels和媒體類型上。

+1

我不同意URIs只是一個實現細節,因爲它們實際上是識別你的資源。一個好的RESTful設計應該考慮到這一點,以提高含義和語義。 – 2011-02-09 23:40:39

2

我想說/user/{id}/friends是一個適當的標識符。當然,您也可以使用/users/{id}/friends,但我個人更喜歡區分項目資源和收集資源。

1

我沒有看到你的解決方案看到任何問題。作爲它代表的URI的完美選擇。