2014-04-22 43 views
3

我是新來的REST服務,所以很抱歉,如果這是一個明顯的問題。REST服務 - 月迄今計算

在我的系統中,我有一個Staff對象和一個Fee對象。費用由工作人員向客戶收取,用於完成一個工作單元。每個員工可以有許多與之相關的費用。

常用的CRUD方法都可以通過:

  • mydomain.com/Staff
  • mydomain.com/Fee

有商家需要顯示本週最新,本月至今,年給定工作人員的最新費用總計。

如果這是一個SOAP服務,那麼我可能會創建一個像GetToDateTotals(staff)這樣的方法來計算並返回所有的數字。我不知道這個邏輯應該放在REST服務中。

我知道我可以通過GET婷所有相應的費用單獨做在客戶端,做計算,但是我看到2個缺點與方法:

  1. 那麼可能有數以千計的電話,以該服務讓所有的費用單獨
  2. 的邏輯是在客戶端,所以如果3個客戶使用該服務,該邏輯被複制3次

另一種可能的解決辦法是有一個mydomain.com/Staff/FeesToDate或類似的東西,但這似乎不符合REST架構風格。

回答

1

我想有以下REST接口:

GET mydomain.com/staff/<staffId>/fees //returns paginated list of fees of a staff 
GET mydomain.com/staff/<staffId>/fees/summary //returns week-to-date, month-to-date, and year to-date 

您可以選擇具有查詢參數只返回一個類型的總結:

GET mydomain.com/staff/<staffId>/fees/summary?type=month-to-date 

你是正確約在客戶端計算的款項在進行計算之前,您必須撥打多個電話才能獲得所有費用,這是不可取的。最好在服務器端執行計算,以便可以進行緩存。