2014-03-26 81 views
1

我有兩個已經現存的對象,如何「正確」現有實體添加到集合REST風格

/foo/1 GET 
/bar/1 GET 

每個foobar S和每個barfoo秒。如何將我的bar添加到我的foobar集合中?

這似乎是一個可能的解釋:

/foo/1 PATCH { bars: [1] } 

,但它打破了想法,連接到該foobar S的關係通過/foo/1/bar/顯示。這也似乎是有效的:

/foo/1/bar/ POST { id: 1, ... } 

,並符合最接近wikipedia描述,但因爲我們沒有創造新的bar這是一個有點混亂。這也造成了一種奇怪的含糊性,因爲通過這種方法也可以創建一個新的bar分配給foo。最後,還有:

/foo/1/bar/1 POST 

我只是普通的由於其簡單,但不與維基百科的描述一致,並沒有給出明顯的方式從列表中刪除bar(因爲DELETE將刪除bar)。

我意識到REST是一種架構風格,而不是一個明確的標準,但必須有一些最不成問題的方式來做到這一點。

回答

1

我平時看到的,通過使用第三資源擁有foo和酒吧,如之間的映射本解決:

POST /foo 
<- "id": 22 

POST /bar 
<- "id": 17 

POST /foo-bars 
-> { "fooId": 22, "barId": 17 } 
+0

雖然這提供了一個解決方案,這是一個有點難看,並創建了一大堆有關的對象那隻不過是外鍵。如果可能的話,我想避免將這些中間對象直接暴露給前端,以避免大量額外的調用。 – astex

相關問題