2013-07-17 24 views
5

作爲標題:爲什麼RESTful的聚合函數不好主意?雖然我知道CRUD對RESTful有好處。爲什麼RESTful的聚合函數不好主意?

舉例來說,資源是「員工」,並且客戶需要以檢索總量之和全體員工的「工資」。 RESTful服務不應該提供這樣的總和功能嗎?

進一步的問題:如果聚合函數對於RESTful不好,客戶如何獲得總工資的總和?檢索所有'員工'記錄並總結自己?

+0

您是否需要更多的hel對此? – benjiman

回答

7

我不會說將操作結果(即聚合函數)暴露爲REST中的資源必須被認爲是不好的。

RESTful Webservices Cookbook(O'Reilly出版):

一個REST的架構約束中最常見的看法是,他們 只適用於那些「東西」或「實體」在應用領域資源。儘管在許多情況下這可能是真實的,但涉及處理功能 的情景挑戰該感知。

將處理函數視爲資源並使用HTTP GET來獲取包含處理函數輸出的表示是很常見的。您還可以使用查詢參數爲處理功能提供輸入。

那麼,爲什麼不提供員工人數的工資聚集的資源,也就是這樣的結果:

GET /employees/aggregation?data=salary 

或更一般:

GET /aggregator?resource=employee&data=salary 

你甚至可以過濾應該將這些工資彙總的員工組,例如:

GET /employees/aggregation?data=salary&divison=sales