我正在創建一個暴露類似於組成員身份的API。實際上,我有一個GroupMembership
資源,它暴露於/groupmembership
。REST:引用具有URI或UUID的實體嗎?
現在,當我想創建一個用戶和組之間的新關聯時,我會POST
到/groupmembership
。我很好奇的是我應該如何參考User
和Group
資源實例。我是通過URI來做還是通過他們的UUID來做?也就是說,這兩個有效載荷中的哪一個是有效的?
POST /groupmembership
{
user: "http://localhost:8080/user/abcd-def-ghij",
group: "http://localhost:8080/group/1a2-b3c-4d5"
}
或
POST /groupmembership
{
user: "abcd-def-ghij",
group: "1a2-b3c-4d5"
}
我使用Spring HATEOAS而據我所知,沒有辦法取消引用鏈接到實體ID,這使得第一種方法有點問題。基本上,給定一個鏈接,我想能夠找出引用實體的UUID。但是我也不想解析URI,因爲它們應該是不透明的。那麼Spring HATEOAS可以這樣做嗎?
第二種方法,我可以簡單地查看它,但我想知道哪種方法更有意義。有一件令我困擾的事情是,第一件事情應該由客戶處理;即它是遵循URI的客戶端。似乎服務器應該只能處理UUID?但另一方面,服務器完全控制了URI的結構,因此它似乎應該知道如何將URI解引用到合適的實體/資源ID。
謝謝!我認爲這是有道理的,因爲無論如何,URI都應該唯一標識一個資源。 – 2014-10-07 16:35:42