我已经阅读了关于SO的答案,但我仍然想知道
说我有一个“购物车”资源,我需要功能
1。 AddItemToCart
2。 RemoveItemFromCart
我对安宁的理解说
cart
PUT /cart/{cartId}
PUT /cart/{cartId}
那样。注意我没有使用DELETE
,因为我从购物车中移除了一些东西而不是移除购物车本身我的问题是
1。使用上面的方法,如果我想在服务器上记录这些调用。我怎么知道哪个叫“addToCart”,哪个叫“removeFromCart”(显然没有通过购物车内容)?
2。有没有其他方法可以实现这个(addToCart和removeFromCart)更多RESTful功能,并且还可以解决日志记录问题?
答案 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`然后会有从购物车中解决其他关系没问题。