为什么聚合功能对RESTful来说不好?

卢声远*_* Lu 5 rest aggregate-functions

标题:为什么聚合功能对RESTful不好?虽然我知道CRUD对RESTful有好处.

例如,资源是" 员工 ",客户需要检索所有员工的总" 工资 " 总和.RESTful服务不应该提供这样的求和功能吗?

进一步的问题:如果聚合功能对RESTful不利,客户如何获得总薪水总和?要检索所有" 员工 "记录并总结一下?

ben*_*man 8

我不会说暴露操作结果(即聚合函数)作为REST中的资源必须被认为是坏的.

来自RESTful Webservices Cookbook(O'Reilly):

REST的架构约束最常见的一种看法是它们仅适用于应用程序域中"事物"或"实体"的资源.尽管在许多情况下这可能是正确的,但涉及处理功能的场景挑战了这种感知.

将处理函数视为资源是很常见的,并使用HTTP GET来获取包含处理函数输出的表示.您还可以使用查询参数为处理函数提供输入.

那么为什么不提供一些员工的工资汇总结果作为资源,例如:

GET /employees/aggregation?data=salary
Run Code Online (Sandbox Code Playgroud)

或更一般:

GET /aggregator?resource=employee&data=salary
Run Code Online (Sandbox Code Playgroud)

您甚至可以过滤应该汇总工资的员工组,例如:

GET /employees/aggregation?data=salary&divison=sales
Run Code Online (Sandbox Code Playgroud)