【发布时间】:2015-07-17 21:03:43
【问题描述】:
在设计 RESTful API 时,以下调用为我们提供了用户 123 的基本信息(名字、姓氏等):
/api/users/123
我们有很多关于用户的信息,因此我们会进行额外的调用以获取用户的子资源,例如他们的购物车:
/api/users/123/cart
对于管理页面,我们希望查看所有用户的所有购物车信息。一张大表,列出了每个用户以及有关他们购物车的一些详细信息。显然,我们不想为每个用户(大量请求)进行单独的 API 调用。使用 RESTful API 模式如何做到这一点?
/api/carts/users 浮现在脑海中,但理论上你有两种方法可以通过 /api/carts/users/123 获取特定用户的购物车。
【问题讨论】:
-
你能定义两个api吗,一个给
/api/users/{userId}这样的用户,另一个给/api/carts/{cartId}这样的购物车? -
购物车对象包含属性 userId。对于管理页面,您可以使用类似 '/api/carts?page=1' 的内容来获取前 X 个购物车。然后使用 userId(从购物车对象中提取)发送另一个请求,例如 'api/users?id = id1, id2, id3...` 以获取用户信息。
-
购物车有点误导。就我而言,这不是一个实体。它更多的是对用户购物行为的统计和分析的总结。所以它并没有真正的 ID,而只是在 API 的服务方法中创建的一堆计算的统计信息和摘要信息。我调用 /api/users/123/cart 来获取用户关于他们购物的统计信息。我也可以通过调用 /api/org/111/cart 来获取有关企业的“购物车”(统计信息/摘要信息)。因此,如果我想要所有用户的购物车(或统计信息)列表,我想知道 /api/carts/users 是否是正确的方法。似乎有些错误,但不确定。
标签: rest restful-url restful-architecture