假設我想創建一個RESTful接口,並且我想根據它們的IDs使用foo
。這裏沒有新東西:返回也是集合的資源表示的最佳實踐
GET /api/foo1
返回foo1
的表示(例如使用JSON)。DELETE /api/foo1
刪除foo1
。
等
現在讓我告訴你,「富」是一個集合類型的事情。所以,我希望能夠以「條」添加到「富」:
PUT /api/foo1/bar3
增加bar3
到foo1
。GET /api/foo1/bar3
返回foo1
的表示形式。DELETE /api/foo1/bar3
從foo1
刪除bar3
。DELETE /api/foo1
共刪除foo1
。
現在問題仍然存在:GET /api/foo1
做什麼?它是否像我最初在這個問題中假設的那樣簡單地返回foo1
的表示形式?還是它返回一個酒吧列表?或者它是否返回表示foo1
既是foo1
的描述以及包括所有包含的酒吧列表?
還是應該GET /api/foo1
僅僅返回foo1
表示如我在開始時假定,並要求PROPFIND
請求,要求列內foo1
(通過WebDAV的所採用的方法)的棒?但是爲了保持一致,我是否不必將所有其他列表類型的功能都更改爲PROPFIND
,這直接違背了成千上萬的REST教程,這些教程使用GET /api/foo1
來列出內容?
我喜歡你的方法。事實上,這是相同的行爲,真正面向對象的語言實現對數組或對象列表: Array對象的屬性:長度,尺寸,只讀 陣列方法GetValue - 返回一個項目 List對象的屬性:頭部,當前 列表方法GetEnumerator - 返回一個對象,該對象又將返回項目 –