REST API:如果文档会根据查询参数而更改,则GET请求会返回错误?

时间:2019-04-17 07:47:45

标签: rest error-handling api-design

我们目前正在实施REST API,以处理在线商店中的购物车。为此,我们需要能够更改购物车的购买币种。我们系统中的类似API使用查询参数来更改语言环境或货币等内容。 G。要检索产品信息(包括特定货币的价格),您将发出以下请求:GET /products/<product-id>?currency=USD

对于我们的购物车API,像这样更改币种意味着我们将需要使用新币种的价格在内部触发计算;如果购物车中有无法使用该货币购买的产品,则这些产品将被删除。由于GET请求只能检索数据,而不能更改数据,因此我们不想触发GET请求的计算。不过,我们不确定如何处理:我们应该以旧币退回购物车,而只是忽略客户要求使用其他币种的事实,还是应该返回错误,表明该车对所请求的货币无效(因此,错误)完全不返回购物车文件)?

在发出使用新币的购物车的POST或PUT / PATCH请求时,无论如何都会重新计算,因此在这种情况下没有问题。

另一种方法是在资源文档中将货币作为字段而不是查询参数。这意味着它不能通过GET请求进行更改,尽管客户端可以通过POST / PUT / PATCH通过请求正文显式指定货币。但是,此解决方案与我们系统中的其他API有所不同,这也不是最佳选择。

如果您看到其他解决方案,请随时提出建议。预先感谢!

1 个答案:

答案 0 :(得分:0)

  1. 您能否更清楚地说明该商品是否使用其他货币 您的系统支持货币换算,或者您只想 丢弃那些物品。
  2. 基本上,您应该在计算时进行货币换算 总价,而不是在添加到购物车时进行转化
  3. 或者您应该将货币作为路径参数而不是查询参数,并根据用户货币使其固定在其余uri中。这样,用户就不能请求除货币以外的任何其他货币项目(假设用户必须设置他的货币)