我有(我认为是)一个子资源。对于给定的资源总是只有一个子资源。这个子资源应该总是有一个ID? 例如。让我们说资源是员工,子资源是工资。进一步让我们也假设你永远不能“放”工资。 (也许它总是在后端更新,任何放入的调用将被立即宣布为不良请求) 在这种情况下,哪种阅读工资更好?REST资源没有ID可以吗?
/员工/ 1234 /薪
或
/员工/ 1234 /的getSalary
在第一种情况下,工资看起来像一个资源。
或者“薪水”不是一种资源,必须被认为是应该填充结果字段的“过滤器”?
我有(我认为是)一个子资源。对于给定的资源总是只有一个子资源。这个子资源应该总是有一个ID? 例如。让我们说资源是员工,子资源是工资。进一步让我们也假设你永远不能“放”工资。 (也许它总是在后端更新,任何放入的调用将被立即宣布为不良请求) 在这种情况下,哪种阅读工资更好?REST资源没有ID可以吗?
/员工/ 1234 /薪
或
/员工/ 1234 /的getSalary
在第一种情况下,工资看起来像一个资源。
或者“薪水”不是一种资源,必须被认为是应该填充结果字段的“过滤器”?
无论您选择哪种方式,都没有REST警察会撞上您的门。
我的意见:
有一个没有id的子资源没有问题。正如你所说,你想要做的只是实现“现场过滤器”的一种方式。这是不太灵活的做法。这里有一些因素(主要是性能相关的):
如果您对这些后果确定,那么您的想法没有任何问题。
我的意见:使用名词的资源名称,而不是动作短语,这意味着使用/salary
,而不是/getSalary
。方法+资源名称形成你的动作短语:“GET/employee/123/salary”是合理的,“GET/employee/123/getSalary”没有意义。
哲学问题(主要是基于观点的)在Stackoverflow中不受欢迎。在一天结束时,你会选择一个符合你自己的意见的答案... – alfasin
是的,这是可以做到这一点 – Brandon
@Brandon - 我不知道我遵循 - 你推荐哪种方法? /薪水还是/ getSalary? – Dhan