哪个HTTP方法用于REST风格的api,用于“添加到购物车”中已有购物车的商品?
我已经开始在我的RESTful API中将addToCart方法设计为HTTP POST。当客户端第一次将产品添加到购物车时(POST在服务器上创建新条目)时,这看起来很不错。但是,当客户端浏览网站并再次添加相同的项目时,相同的HTTP规则会中断;我们不应该创建新的条目,而只是更新现有条目的数量。哪个HTTP方法用于REST风格的api,用于“添加到购物车”中已有购物车的商品?
是不是使用POST来更新资源错误?实施这个的方式是什么?或如何解释这种情况。
注意:使用我的API的客户端/ UI前端不会记得它的服务器上是否已经存在。请考虑任何电子商务应用程序的addtocart为例。
我认为这里的困难已经存在于您如何将原始物品添加到购物车中。
当你添加一个项目到购物车,你是否创建一个新的对象(项目)?或者你在修改现有的物品(购物车)?对我而言,说后者更有意义。当您将商品添加到商店时,发布商品似乎应该为不同的情况保留。
从概念上讲,购物车就像商店中所有商品的向量,与一个数字相关联(几乎全部为0)。添加一些东西到购物车意味着递增这个数字的其中一个项目,无论它是否已经超过0.
谢谢jwg。你已经向我展示了如何从不同的角度来看待。这对我有帮助。 –
您可以使用PATCH
将零件对象/更新发送到现有对象。
使用我的RESTful服务的客户端/用户界面不知道产品是否已经在购物车中。如何处理这个? –
你确实发送了产品ID?该API将决定是否要添加或更新数量... – Stuart
是的。根据规范,POST用于添加,PATCH用于部分更新。不会按照规范更新POST方法的违规数量吗? –
它基于你的模型。恕我直言,邮政也很好,如果你正在建模一个新的意图或购物车操作,它可以基本上任何东西。
为什么不只是检查是否已经有相同的产品在购物车,然后如果是,更新它,否则添加新的。 – Veki
我可以在同一POST上做到这一点。但是,这不是HTTP POST方法违反,因为POST规范说每个POST请求都在服务器上创建条目吗? –