我们目前正在实施REST API,以处理在线商店中的购物车。为此,我们需要能够更改购物车的购买币种。我们系统中的类似API使用查询参数来更改语言环境或货币等内容。 G。要检索产品信息(包括特定货币的价格),您将发出以下请求:GET /products/<product-id>?currency=USD
对于我们的购物车API,像这样更改币种意味着我们将需要使用新币种的价格在内部触发计算;如果购物车中有无法使用该货币购买的产品,则这些产品将被删除。由于GET请求只能检索数据,而不能更改数据,因此我们不想触发GET请求的计算。不过,我们不确定如何处理:我们应该以旧币退回购物车,而只是忽略客户要求使用其他币种的事实,还是应该返回错误,表明该车对所请求的货币无效(因此,错误)完全不返回购物车文件)?
在发出使用新币的购物车的POST或PUT / PATCH请求时,无论如何都会重新计算,因此在这种情况下没有问题。
另一种方法是在资源文档中将货币作为字段而不是查询参数。这意味着它不能通过GET请求进行更改,尽管客户端可以通过POST / PUT / PATCH通过请求正文显式指定货币。但是,此解决方案与我们系统中的其他API有所不同,这也不是最佳选择。
如果您看到其他解决方案,请随时提出建议。预先感谢!
答案 0 :(得分:0)