我应该使用PATCH或POST同时创建和更新资源吗?



我知道PATCH应该更新现有资源,POST应该创建新资源。但是,我当前的端点必须同时更新和创建。

例如:买方向卖方支付购买物品的钱,因此他们的帐户余额应该发生变化,并且还应该创建一个新的支付交易。

我正在考虑在响应体中返回事务对象。我应该使用哪种方法?

通常PUT创建和更新的正确方法。

如果客户端不能

确定目标URI,则应使用POST,如果客户端可以确定目标URI,则PUT是最佳方法。

例如,如果这篇文章还不存在,PUT /article/hello-world应该返回创建的201,如果它存在并被替换,则返回204/200。

但是,我对你的具体情况有所保留。在您的示例中,它听起来像:
  • 您正在创建一个新事务
  • 这应该会影响现有账户的余额

很可能客户端不决定目标URI是什么。

在这种情况下,我主要是从事务的角度来考虑这个操作。如果你想传达一个事务对其他资源有影响,你可能想使用Link头。

例子

请求
POST /transactions HTTP/1.1
Content-Type: application/json
{
"from": "/accounts/123",
"to": "/accounts/456",
"quantity": "55.00"
}

反应:

HTTP/1.1 201 Created
Location: /transactions/555513412
Link: </account/123>; rel="invalidates"
Link: </account/456>; rel="invalidates"

请注意,'invalidates'链接关系处于草案状态,但这是一个好主意,我在我们的api中使用了很多次

相关内容

  • 没有找到相关文章

最新更新