1)我假设URL的查询字符串组件也被视为资源身份的一部分?
2)如果它确实被认为是身份的一部分,那么有什么理由说明为什么在REST中我们不能/不应该使用包含<的URL来识别资源 em>查询字符串组件?
谢谢
答案 0 :(得分:2)
如果您使用URL寻址的资源代表http://yourdomain.com/customers
等资源的集合,那么使用查询参数过滤结果是一种有效的休息方式:
http://yourdomain.com/customers?minSalary=2000&maxAge=50
所以是的,查询参数对于识别资源是有意义的。
答案 1 :(得分:1)
我认为你的根问题是关于使用会返回唯一项的查询。
/orders?ID=8
与
的资源相同/order/8
因此我们有两个相同资源的URI。你可能会问这是好的,拥有多个URI来获得相同的资源是完全没问题的。一般来说,你应该链接到更多的规范&#39; URI,最短的路径&#39; (分层次地说)资源。
您通常不应该依赖查询参数,因为它往往会导致API设计尴尬。例如,如果你想知道鲍勃所做的所有订单,你可能会想到&#34;好吧,我过滤订单&#34;
/orders?users=bob
在哪里,更好的思维方式是&#34;我想要所有用户,只是bob,只是他的订单&#34;,所以你宁愿做
/users/bob/orders
这是一个简单的URI,您可以从&#39;用户资源&#39;链接到该URI。对于鲍勃。可悲的是,当你想说,看看多个用户的订单时,第二种方法会有点尴尬
/users/jack,jill,alice,bob/orders
它可行,但很奇怪。