REST资源没有id可以吗?

时间:2017-03-06 18:23:25

标签: rest

我(我认为)是一种子资源。给定资源始终只有一个子资源。该子资源是否应始终具有ID? 例如。我们说资源是员工,子资源是薪水。进一步让我们假设你永远不能放置"薪水。 (也许它总是在后端更新。任何put调用都会被概括地声明为坏请求) 在这种情况下,这是一个更好的阅读薪水模型?

  

/雇员/ 1234 /薪水

  

/雇员/ 1234 /的getSalary

在第一种情况下,薪水看起来像资源。

或者"薪水"不是资源,必须被视为"过滤器"应该填充结果的哪些字段?

1 个答案:

答案 0 :(得分:1)

无论您选择哪种方式,都没有REST警察会敲门。

我的意见:

拥有没有id的子资源没有任何问题。正如您所说,您想要做的最终只是实现"字段过滤器的一种方式"。这是一种不太灵活的方式。以下是一些注意事项(主要与性能相关):

  • 希望获得员工和工资的客户现在必须提出2个请求
  • 它不能很好地扩展到多个属性:如果你还有另一个属性"奖励"那需要同样的待遇吗?现在客户端必须提出3个请求

如果你对这些后果感到满意,那么你的想法就没有错。

我的观点:使用名词作为资源名称,而不是动作短语,这意味着使用/salary,而不是/getSalary。 METHOD +资源名称构成您的行动短语:" GET / employee / 123 / salary"有道理," GET / employee / 123 / getSalary"没有意义。