我知道 PATCH 應該更新現有資源,POST 應該創建一個新資源。但是,我當前的端點必須同時更新和創建。
例如:買方為購買的物品向賣方付款,因此他們的帳戶余額應該會發生變化,并且還應該創建新的付款交易。
我正在考慮在回應正文中回傳 Transaction 物件。我應該使用哪種方法?
uj5u.com熱心網友回復:
通常PUT是正確的方法都創建和更新。
POST如果客戶端無法確定目標 URI,則應使用,但如果客戶端可以確定目標 URI,PUT則是最好的方法。
例如,如果這篇文章不存在,PUT /article/hello-world應該回傳201created,如果存在并且它被替換了,則回傳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 中多次使用它
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/339123.html
