我想知道當您擁有包含子資源列表的資源時,哪個是最佳實踐。例如,您擁有資源作者,其中包含名稱,ID,生日和List書籍等信息。這本書目錄只與作者有關。所以,你有以下情形:從子資源列表中更新/添加/刪除項目的REST設計
- 你想要一本新書添加到圖書清單
- 你想從列表中
- 更新一本書的名字要從刪除一本書列表
SOLUTION 1
我搜遍這是正確的設計,我發現了多種方法。我想知道是否有標準的設計方法。我認爲設計的書上說來有以下幾種方法:
- 補充:
POST /authors/{authorId}/book/
- 更新:
PUT /authors/{authorId}/book/{bookId}
- 刪除:
DELETE /authors/{authorId}/book/{bookId}
解決方案2
我的解決方案是隻有一個PUT方法完成所有這三件事情,因爲書籍列表只存在於對象作者中,而您是實際的更新作者。喜歡的東西:
PUT /authors/{authorId}/updateBookList
(發送author對象內部的整體更新的圖書列表)
我發現在我的方案的多個錯誤。例如,從客戶端發送更多數據,在客戶端擁有一些邏輯,對API進行更多驗證,並且還依賴客戶端具有最新版本的Book List。
我的問題是:這是否反模式?
情況1.在我的情況下,我的API使用另一個API,而不是數據庫。使用的API只有一個「updateBookList」方法,所以我猜測在我的API中複製這種行爲也比較容易。這是否正確?
情況2.但是,假設我的API會使用數據庫,它會更適合使用SOLUTION 1嗎?
此外,如果你可以提供一些文章,書籍,你可以找到類似的信息。我知道這種設計不是用石頭寫的,但有些指導方針會有所幫助。 (例如:REST API Design Rulebook)
如果這是一個真正的問題,而不是作業,請記住,書籍可以有多個作者。一本書應該是真正的頂級資源。 –
這是一個真正的問題,但在我的情況下,書籍列表只屬於一個作者。例如,如果您刪除作者,那些書籍將不再存在。 – green
現在。如果業務需求發生變化,您可能會冒API風險。當然,只有你可以知道這有多可能。 –