2014-12-01 53 views
0

一種方法表示您應該保持資源URL簡單。我們在HTTP和資源名稱中使用動詞作爲路徑。所以我們可以有:REST設計:資源動詞或相關集合?

GET /books/12 

如果我們想獲取相關的集合,我們可以這樣做:

GET /books/12/pages 

在另一方面,是利用所謂的資源動詞實踐在那裏你可以微調動詞操作:

POST /books/12/bookmark 

我不會爲我的API使用這兩種方法。我傾向於認爲第一種方法是比較正確的(在允許的資源名稱即無動詞),以及我們可能會使用不同的實體第二種方法,就像型號:

POST /book-bookmarks/12/ 

或不同的ID:

POST /bookmarks/12+book/ 

我知道在這方面沒有真正的答案,但哪一個會是首選?我希望看到一些實際經歷過這樣的設計決策的人的答案。

回答

0

有關識別資源的URI(或IRI)是standard。這些資源可以是網絡文件,真實的東西等等。在目前的情況下,它們是網絡文件。據我所知。關於URI結構沒有標準,但URI標準和HTTP標準表明您應該以程序方式使用URI和HTTP方法。因此,HTTP動詞描述過程,URI標識過程的對象。現在你通常用動詞來描述過程,而你通常用名詞來描述對象。這就是爲什麼在URI結構中至少在(分層)路徑部分使用唯一名詞是合乎邏輯的原因。 (通常你可以用標準的HTTP方法和專有名詞解決所有問題,只有在非常特殊的情況下才會導致問題,在這種情況下,我認爲使用新的HTTP方法比把動詞放入URI更好。這是非常罕見的,例如使用查詢字符串不兼容的參數進行搜索,例如,文件可能是這種情況;在這些情況下,在URI中使用POST和動詞的另一種方法)。