2017-01-12 39 views

回答

1

PUT請求的語義是身體完全代表資源的新狀態。客戶端發送的表示應完全覆蓋數據層中的現有表示。

根據您的選擇,缺失的屬性可以默認爲空/空或可能導致422 UNPROCESSABLE ENTITY(或400 BAD REQUEST,如果您對WebDAV過敏)。任何具有空/空值的屬性都將在數據層中設置爲空/空值。

可能不需要檢查該字段是否相同。只是打破了數據庫中的內容。

如果要更新字段的子集,您需要PATCH,POST或微資源和PUT

+0

我們使用put請求來部分更新一個字段或任何字段的組合,並且給出了很大的靈活性(一個用於多個用戶情況的路由)。如果我們按照您的回答建議,那麼即使我們只需要更新一個,API客戶端(Angular SPA)也將被迫獲取所有字段值,但這些信息並不總是可用的。例如:如果我只需要更新 – user2080105

+2

@ user2080105,爲什麼我需要獲取併發送所有用戶15字段?這樣做違反了PUT的語義,如https://tools.ietf.org/html中所述/rfc7231#section-4.3.4。有沒有互聯網警察阻止你,但你應該意識到你無視規範並失去PUT的冪等(https://tools.ietf.org/html/rfc7231#section-4.2.2)。你可能想考慮我建議的替代方案。 –