1
選項1:如果未在前面更新,則發送空字段。檢查後面是否空着。如何在處理PUT呼叫時有效檢查資源字段是否更新
選項2:如果未更新,請勿在請求中包含字段。檢查字段是否存在。
選項3:在前面發送一個字段值,即使它與舊值相同。檢查請求字段是否與數據庫現有值相同。
選項1:如果未在前面更新,則發送空字段。檢查後面是否空着。如何在處理PUT呼叫時有效檢查資源字段是否更新
選項2:如果未更新,請勿在請求中包含字段。檢查字段是否存在。
選項3:在前面發送一個字段值,即使它與舊值相同。檢查請求字段是否與數據庫現有值相同。
PUT
請求的語義是身體完全代表資源的新狀態。客戶端發送的表示應完全覆蓋數據層中的現有表示。
根據您的選擇,缺失的屬性可以默認爲空/空或可能導致422 UNPROCESSABLE ENTITY
(或400 BAD REQUEST
,如果您對WebDAV過敏)。任何具有空/空值的屬性都將在數據層中設置爲空/空值。
可能不需要檢查該字段是否相同。只是打破了數據庫中的內容。
如果要更新字段的子集,您需要PATCH
,POST
或微資源和PUT
。
我們使用put請求來部分更新一個字段或任何字段的組合,並且給出了很大的靈活性(一個用於多個用戶情況的路由)。如果我們按照您的回答建議,那麼即使我們只需要更新一個,API客戶端(Angular SPA)也將被迫獲取所有字段值,但這些信息並不總是可用的。例如:如果我只需要更新 – user2080105
@ user2080105,爲什麼我需要獲取併發送所有用戶15字段?這樣做違反了PUT的語義,如https://tools.ietf.org/html中所述/rfc7231#section-4.3.4。有沒有互聯網警察阻止你,但你應該意識到你無視規範並失去PUT的冪等(https://tools.ietf.org/html/rfc7231#section-4.2.2)。你可能想考慮我建議的替代方案。 –