使用Rest API的正确方法

时间:2018-12-28 17:15:33

标签: rest api

我有三个表Customers, Sellers and Orders,我正在使用Rest API,那么访问客户/卖方订单的最佳方法是什么?

1:/customers/:custumerId/orders

2:/orders/customers/:customerId

1:/sellers/:sellerId/orders

2:/orders/sellers/:sellerId

现在我正在使用第二(2)种方式。但是我怀疑这是否是正确的方法。

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将是理想的。由于卖方,客户和订单之间的联系方式。

客户订单-一对多

卖方客户-多对多

卖家订单-一对多