2014-01-25 18 views
0

假設我有一個包含100多個表的關係數據庫。每張桌子都模仿某種實體(人物,地址,車輛,狗等等)。假設我也有一個寧靜的API和一羣想要將數據發佈到這個數據庫的人。很多時候,這些數據都是作爲一個XML包或者來自Web表單的POST數據或者其他性質。 有時我們需要發佈到數據庫的所有表格,有時候是最多的,有時是一些,有時是一個。Restful資源和關係數據庫不兼容

現在需要我們的客戶通過的

POST /person 
POST /email 
POST /vehicle 
POST /insurance 

RESTful方式張貼多資源數據的團塊到100+表持久性是瘋了!因此,我們可以有一個資源而不是爲

POST /auto-record 
{ post body of key values for all the tables needed to make an 'auto-record' } 

,它會被連接到某種商業邏輯,它知道,使插入到所需的數據庫的許多表。好的,太好了。但是現在我正在考慮這個設計,這個設計是否遵守開放/封閉的原則?如果我們需要更新/添加/刪除「自動記錄」,那麼我們就搞砸了我們的客戶。

restful api如何處理資源分組?或者它不是?有替代品嗎?

+0

您遇到此問題的意見區域。誰說,所有的程序都必須遵循所有的SOLID校長?通常以其他收益的名義,您放棄了一些校長,您通常會遵循 –

+0

我不知道您的方法中存在任何REST式樣違規行爲。也許你應該考慮重命名你的資源名稱,因爲'auto-record'太抽象了。提供GET,POST,UPDATE或DELETE更復雜的實體(他的寵物列表,地址等的人)應該沒有問題。請參閱下面的答案。 P.S .: REST原則不是一種學說,它是使用資源處理HTTP協議的正確方法。 – klimpond

回答

0

您可以實現更多版本的RESTful API資源/auto-record。現在將您的資源URI修改爲/v1/auto-record。當有功能變更請求時,您只需向您的客戶提供新資源/v2/auto-record。舊功能將保留在/v1/auto-record,新用戶將在v2/auto-record有他們需要的功能。