我正在設計一個系統,其中將使用面向任務的UI和CRUD UI的混合構造用戶界面。這樣我們就能夠爲不同的用戶角色提供最佳的用戶體驗。面向任務的用戶界面和Rest應用程序服務器API
客戶端應用程序使用REST/JSON與應用服務器進行通信。
對於CRUD部分REST API部分主要是直foreward。但是在我們的應用程序中爲面向任務的動作設計API則有點困難。
一個如何去設計一個REST API,使兩種不同的行爲區別開來的,這兩個其實只是更新數據的資源?
作爲一個例子 - 用戶可以由於以下原因改變一個人的地址:
- 該地址包含一個故障,例如街道的名稱拼寫爲 錯誤。
- 的人已移動到不同的地址
這兩個原因導致同一端的情況;數據已經改變。但是在REST API中,應該有所不同,以便能夠做出不同的反應。
應用程序的很大一部分是基於CRUD操作的,所以選擇一個以數據爲中心的REST風格的API似乎是我自然而然的選擇。但是與RPC樣式的API相比,這也有一些缺點。舉個例子:/ Address和/ Address/UpdateStreetName都以同一個資源爲目標,但現在使用不同的URI。這不僅僅是以不同的格式進行RPC風格的調用嗎?整體影響是一樣的;地址獲得更新。但是當這個人移動時,我們可能想要給這個人一張明信片到我們不想這樣做的新地址,當我們修正一個錯字時。 – RogierBessem
對我/地址/更新和/地址/ UpdateStreetName是不同的:一個意味着整個地址可以編輯,另一個更精確(但仍然限制爲地址)。對於更具體的情況,您可以採取基於方案的方法,可能是這樣的:/ ChangeOfAddress作爲地址更改可能不僅影響地址;所以你可以使用它作爲其他呼叫的外觀,如/ PhoneNumber/Update(但我可能會偏離這裏的路徑)。 –