实现购物车时如何成为RESTful

时间:2016-04-08 10:45:15

标签: web-services rest

我已经阅读了关于SO的答案,但我仍然想知道

说我有一个“购物车”资源,我需要功能
1。 AddItemToCart
2。 RemoveItemFromCart

我对安宁的理解说

  1. 拥有资源cart
  2. addItemToCart应该如此PUT /cart/{cartId}
  3. removeItemFromCart应该像PUT /cart/{cartId}那样。注意我没有使用DELETE,因为我从购物车中移除了一些东西而不是移除购物车本身
  4. 我的问题是
    1。使用上面的方法,如果我想在服务器上记录这些调用。我怎么知道哪个叫“addToCart”,哪个叫“removeFromCart”(显然没有通过购物车内容)?
    2。有没有其他方法可以实现这个(addToCart和removeFromCart)更多RESTful功能,并且还可以解决日志记录问题?

1 个答案:

答案 0 :(得分:1)

购物车中的“商品”应该有一个ID - 它本身就是一种资源,所以你不能PUT /cart/id删除,你会做DELETE /cart/cart-id/things/thing-id之类的事情。您应该从addItemToCart调用(PUT /cart/cart-id)返回此删除调用中使用的ID。 /cart/cart-id/things/thing-id模式应该用于更新该项目(例如数量)。

如果您的“购物车”上只有一个属性 - 它的内容,那么您可以取消网址的“内容”部分并使用/cart/cart-id/thing-id to address an individual 'thing', but this is a matter of taste and requirements. If your requirements are, for example, that you have access to other attributes of cart, say a delivery address, then you'd want something like / cart / cart-id / address { {1}} / cart / cart-id / thing-id , but if you've used地址to address things then the thing-id bit would be interpreted as a / cart / cart-id / things / thing-id`然后会有从购物车中解决其他关系没问题。