标题:为什么聚合功能对RESTful不好?虽然我知道CRUD对RESTful有好处. 例如,资源是“员工”,客户需要检索所有员工的总“工资”总和. RESTful服务不应该提供这样的求和功能吗? 进一步的
例如,资源是“员工”,客户需要检索所有员工的总“工资”总和. RESTful服务不应该提供这样的求和功能吗?
进一步的问题:如果聚合功能对RESTful不利,客户如何获得总薪水总和?要检索所有“员工”记录并总结一下?
我不会说暴露操作结果(即聚合函数)作为REST中的资源必须被认为是坏的.从RESTful Webservices Cookbook(O’Reilly):
One of the most common perceptions of REST’s architectural constraints is that they
only apply to resources that are “things” or “entities” in the application domain. Although
this may be true in a number of cases, scenarios that involve processing functions
challenge that perception.
将处理函数视为资源是很常见的,并使用HTTP GET来获取包含处理函数输出的表示.您还可以使用查询参数为处理函数提供输入.
那么为什么不提供一些员工的工资汇总结果作为资源,例如:
GET /employees/aggregation?data=salary
或更一般:
GET /aggregator?resource=employee&data=salary
您甚至可以过滤应该汇总工资的员工组,例如:
GET /employees/aggregation?data=salary&divison=sales