簡體   English   中英

創建資源並更新另一個資源時是 PATCH 還是 POST?

[英]PATCH or POST when create a resource and update another resource?

我知道 PATCH 應該更新現有資源,POST 應該創建一個新資源。 但是,我當前的端點必須同時進行更新和創建。

例如:買方向賣方支付購買物品的款項,因此他們的帳戶余額應該會發生變化,並且還應該創建新的付款交易。

我正在考慮將事務對象返回到響應主體。 我應該使用什么方法?

通常PUT兩個創建和更新的正確方法。

如果客戶端無法確定目標 URI,則應使用POST ,但如果客戶端可以確定目標 URI,則PUT是最好的方法。

例如,如果這篇文章不存在, PUT /article/hello-world應該返回201 created,如果存在並且它被替換了則返回 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"

請注意,“無效”鏈接關系處於草稿狀態,但這是一個好主意,我在我們的 API 中多次使用它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM