如何在REST API中实现修改调用

时间:2016-05-10 07:33:07

标签: web-services rest http

假设您拥有REST API背后的一些资源。可以使用通常的HTTP谓词PUT或PATCH修改此资源。但是,让我们假设API背后的服务器必须检查一些先决条件,以决定是否可以对资源进行修改(例如从银行账户中提取金额)。

在这种情况下,没有使用POST(因为我们不想添加新资源),也没有使用PUT或PATCH,因为只有服务器知道资源的新值'修改后的属性,如果他将允许所请求的修改。在上面的示例中,帐户的新余额必须在服务器端计算如下:balance = balance - amount,据我所知,所有客户端可以使用PUT或PATCH来发送已修改资源(帐户)或该资源的附加(帐户'余额)。

我是否正确地假设在这种情况下,API设计者必须提供一个参数(例如... / account?withdraw = amount),其中URL指向资源?这个操作的正确HTTP动词是什么?

1 个答案:

答案 0 :(得分:1)

  

使用POST没有用(因为我们不想添加新资源)

你这样做。货币兑换可以在交易中表达,因此:您正在创建新交易。

因此,只需使用事务详细信息执行POST到/transaction端点。

您当然不希望允许用户PUT他们的新帐户余额,因为这需要通过HTTP实现原子性,这是所有REST都反对的:客户端必须知道预交易平衡,并确保在他们到达之前不会进行任何交易。