考虑以下情况:
实现这一目标的最符合REST和常识的方法是什么?
到目前为止,我想到了三种方式:
这似乎是开销。如果以后有更多应用程序会怎样即使大多数代码都相同,也必须复制Controller。
如果以后有更多应用程序可以更容易维护。但这不是拒绝REST的想法吗?
在我的情况下,似乎在ASP.NET Core v1.1中实现起来并不容易,但应该是语法上最正确的方法。
有人可以批准或拒绝我的想法吗?甚至可能扩展列表或说明这种情况下常用的解决方案?
答案 0 :(得分:0)
如果其中一个应用程序需要所有样本,则可以直接使用/ api / Samples;对于另一个,有一个可扩展的方法来指定过滤器(即使这只是几个GET参数) - 如果这实际上是Sample对象上存在的“App”属性,那么?App=A2
是有意义的,如果然后是其他一些属性直接指定这些属性。
这比您的/Samples/A1
和/Samples/A2
想法更加安全,因为它直接指定要查询的属性(A1不使用?App=A1
,因为正如您所说的应用程序1消耗整个样本对象列表)而不是知道什么应用程序查询它,任何相似性只是由于(我怀疑是人为的)结构的例子。
REST不仅仅是关于“在所有情况下使用路径参数”这样简单的事情 - 过滤结果列表是使用查询参数的明显案例。