我會盡量使這個儘可能簡單,這可能是一個愚蠢的問題。REST:如何更新一行並在同一請求上創建零個或多個其他資源?
我正在重寫一個7歲的web應用程序(幫助臺軟件)。它需要使其成爲REST API才能被不同客戶端的Web瀏覽器和移動應用程序使用。也需要保持業務邏輯儘可能接近原來的工作狀態,而這些工作現在一直運行良好。
關於REST目前的鬥爭:
我需要的是更新的資源可以說/tickets/47321
如果該資源的status_id
改變這種變化的記錄需要保存,無論是在同一個數據庫交易中,因爲它需要是全或無。這是原始應用程序的工作方式,我們希望保持這種行爲。
所以問題是:
我可以PUT
到tickets/47321
整個資源或部分狀態表示更新的資源駐留在服務器並創建歷史變化的新紀錄(如果status_id
是不同的)和返回他們兩個回客戶端爲JSON:
{
ticket: {}, // new ticket state
history: {} // the new created record of history change
}
通過這種方式,客戶端可以更新ticket
並添加歷史的歷史變化的名單,如果有任何存在的回報?
是的,你可以這樣做。在Java中,一些輕量級的REST框架包括Restlets和JAX-RS,而Spring則是一個很好的方面。 –
那麼這種行爲在REST API中是否正常呢?如何在'PUT'上發送部分表示而不是更新整個資源? –
爲什麼要發送部分表示? –