REST服务 - 按月进行的计算

时间:2014-04-22 23:19:19

标签: rest

我是REST服务的新手,很抱歉,如果这是一个显而易见的问题。

在我的系统中,我有一个Staff对象和一个Fee对象。工作人员向客户收取费用,用于完成一个单位的工作。每个工作人员都可以获得许多费用。

通常的CRUD方法可通过以下方式获得:

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

业务需要显示给定员工的年初至今,月初至今和年初至今的费用总额。

如果这是一个SOAP服务,那么我可能会创建一个类似GetToDateTotals(staff)的方法来计算和返回所有数字。我不知道这个逻辑应该在REST服务中的位置。

我知道我可以在客户端通过GET单独执行所有适当的费用并进行计算,但我看到了这种方法的两个缺点:

  1. 可能会有数以千计的电话要求服务单独收取所有费用
  2. 逻辑在客户端,因此如果3个客户端使用该服务,则逻辑重复3次
  3. 另一种可能的解决方案可能是mydomain.com/Staff/FeesToDate或类似的东西,但这似乎不符合REST架构风格。

1 个答案:

答案 0 :(得分: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

您在计算客户端的金额时,您在进行计算之前必须多次调用才能获得所有费用,这是不对的,这是不可取的。最好在服务器端执行计算,以便进行缓存。