2016-09-06 23 views
0

我有2個資源,每個資源都有一個GET,我想將其中一個關聯到另一個。關聯的最佳端點設計

因此,可以說,我們有一個用戶列表和學校

GET/API /用戶/ API /用戶/ 5

GET/API /學校/ API /學校/ 8

列表

每所學校都可以有一個用戶列表。另外,每個用戶可以有一個學校列表。 什麼是進行關聯的最佳端點設計?

如:PUT/API /用戶/ 5 /學校(在身體JSON OBJ發送8)

或PATCH/API /學校/ 5(發送只有用戶列表中的用戶OBJ失蹤列表中的用戶將不被刪除)

感謝您的幫助。 謝謝

回答

0

看起來它是您的用戶資源和學校資源之間的多對多關係,並且在RESTful界面中,您可以通過將這些關係表示爲鏈接來返回描述這些資源之間關係的結果/文檔。

因此,用戶可以有一個學校列表,您可以將其表示爲/api/users/5/schools,並且可以是鏈接到school/{id}的學校鏈接列表。

如果一個學校有多個用戶反之亦然/api/schools/8/users就可以發送回一個鏈接列表,每個鏈接指向一個user/{id}

從技術上講,這只是好的,但要小心的管理,這將是一個麻煩,因爲:

當您修改像PUT或PATCH這樣的操作時,特別是在PATCH的情況下,如果您使用json作爲您的有效載荷格式,請使用JsonPatch。無論如何,在這些情況下,如果您更新/api/users/5/schools之一,則schools/{id}/users的緩存必須失效,在很多情況下可能無法確定。

最簡單的方法是去尋找一個membership資源,其中列出了用戶和schoool之間的成員關係,它的緩存容易,並且您也可以輕鬆進行縮放。 :)

欲瞭解更多,你可以看看here