2017-03-06 81 views
0

我有(我认为是)一个子资源。对于给定的资源总是只有一个子资源。这个子资源应该总是有一个ID? 例如。让我们说资源是员工,子资源是工资。进一步让我们也假设你永远不能“放”工资。 (也许它总是在后端更新,任何放入的调用将被立即宣布为不良请求) 在这种情况下,哪种阅读工资更好?REST资源没有ID可以吗?

/员工/ 1234 /薪

/员工/ 1234 /的getSalary

在第一种情况下,工资看起来像一个资源。

或者“薪水”不是一种资源,必须被认为是应该填充结果字段的“过滤器”?

+1

哲学问题(主要是基于观点的)在Stackoverflow中不受欢迎。在一天结束时,你会选择一个符合你自己的意见的答案... – alfasin

+0

是的,这是可以做到这一点 – Brandon

+0

@Brandon - 我不知道我遵循 - 你推荐哪种方法? /薪水还是/ getSalary? – Dhan

回答

1

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

我的意见:

有一个没有id的子资源没有问题。正如你所说,你想要做的只是实现“现场过滤器”的一种方式。这是不太灵活的做法。这里有一些因素(主要是性能相关的):

  • 希望同时获得员工和客户端现在的薪水必须做出2个请求
  • 它不能很好地扩展到多个属性:如果你也有另一种财产“奖金”,需要相同的待遇?现在,客户必须提出3个请求

如果您对这些后果确定,那么您的想法没有任何问题。

我的意见:使用名词的资源名称,而不是动作短语,这意味着使用/salary,而不是/getSalary。方法+资源名称形成你的动作短语:“GET/employee/123/salary”是合理的,“GET/employee/123/getSalary”没有意义。