我有三个表Customers, Sellers and Orders
,我正在使用Rest API,那么访问客户/卖方订单的最佳方法是什么?
1:/customers/:custumerId/orders
2:/orders/customers/:customerId
1:/sellers/:sellerId/orders
2:/orders/sellers/:sellerId
现在我正在使用第二(2)种方式。但是我怀疑这是否是正确的方法。
答案 0 :(得分:1)
选项1似乎是最宁静的模式。这是因为路径中最后列出的资源应该是返回的资源。因此,由于您试图从卖方或买方那里获得所有订单,因此订单应该是路径中的最后一个资源。另一种思考方式是路径的嵌套结构应反映模型的嵌套结构,例如订单在客户/卖方之内。
因此,/customers/:customerId/orders
暗示将退还特定客户的订单,而/orders/customers/:customerId
暗示将退还所有特定客户(可能有很多订单)。
我确实在第二种策略中看到了逻辑,因为您可以按客户或卖方将所有对订单对象的请求分组在一起,但是,完成此模式的一种更好的方法是使用路径/orders
并指定查询字符串中的客户或卖方。例如,/orders?customer_id=:customerId
和/orders?seller_id=:sellerId
。
请注意,允许以多种方式访问资源没有错。请查看这篇文章,以获取有关嵌套式RESTful路由的更多讨论:What are best practices for REST nested resources?。
答案 1 :(得分:0)
1将是理想的。由于卖方,客户和订单之间的联系方式。
客户订单-一对多
卖方客户-多对多
卖家订单-一对多