我是 REST 服务的新手,如果这是一个明显的问题,我很抱歉。
在我的系统中,我有一个Staff
对象和一个Fee
对象。工作人员向客户收取费用以完成一个工作单元。每个员工都可以有许多与之相关的费用。
常用的 CRUD 方法可通过以下方式获得:
mydomain.com/Staff
mydomain.com/Fee
业务需要显示给定员工的周至今、月至今和年初至今的费用总额。
如果这是一个 SOAP 服务,那么我可能会创建一个类似 GetToDateTotals(staff)
的方法,它会计算并返回所有数字。不过,我不知道这个逻辑应该放在 REST 服务中的什么地方。
我知道我可以在客户端通过 GET
单独计算所有适当的费用并进行计算,但我发现这种方法有 2 个缺点:
- 可能会调用该服务以单独获取所有费用
- 逻辑在客户端,所以如果 3 个客户端使用该服务,则逻辑重复 3 次
另一种可能的解决方案是使用 mydomain.com/Staff/FeesToDate
或类似的东西,但这似乎不符合 REST 架构风格。
最佳答案
我会有以下 REST 接口(interface):
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
关于在客户端计算总和,您是正确的,在计算之前您将不得不多次调用以获取所有费用,这是不可取的。最好在服务器端执行计算,这样您就可以进行缓存。
关于REST 服务 - 月初至今的计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23232021/