PUT 和 PATCH 請求的區別


HTTP 是一種應用程式層協議,用於在網路裝置之間傳輸資料。在 HTTP 中,可以使用多種方法。這些方法按順序表示 CRUD(建立、讀取、更新、刪除)操作。一些 HTTP 方法具有許多相同的特性。因此,在 HTTP 系統中實現這些類似的 HTTP 方法之前,我們應該仔細研究它們。例如,PUT 和 PATCH 方法的特性之間存在相似之處,可能會造成混淆。兩者都用於更新特定位置的資源。以下是它們之間的一些區別。

什麼是 PUT 請求?

PUT 是一種更新資源的技術,客戶端傳送更新整個資源的資料。客戶端使用 PUT 方法在 HTTP 伺服器上建立實體或資源。此設定過程本身可以採用兩種形式之一

更新資源

  • 如果請求的實體尚不存在,伺服器會建立它並向客戶端返回成功程式碼 201。

  • 如果實體已經存在,伺服器會更新實體並向客戶端返回 200 或 204 的成功程式碼。此外,如果 PUT 請求遇到問題,伺服器應該向客戶端提供相應的錯誤程式碼,通常是 4xx 或 5xx。它用於完全設定實體的資訊。

在 PUT 方法中,我們需要傳送整個資源以及需要更新的引數。

示例

如果要更新一個人的電話號碼和電子郵件,需要將所有引數以及電話號碼和電子郵件一起傳送才能更新資源。否則,整個資源將被電話號碼和電子郵件替換。

語法

PUT /html file HTTP/1.1

示例

PUT/html file HTTP/1.1
Host: example.com
Content- type: text/html
Content- length: 20
<p> New File </p>

響應

如果目標資源當前沒有表示,並且 PUT 請求成功建立了一個表示,則源伺服器應向用戶代理傳送 201(已建立)響應。

HTTP/1.1 201 Created
Content-Location: /new.html

如果目標資源已經具有當前表示,並且該表示根據所包含表示的狀態成功更改,則源伺服器必須傳送 200(確定)或 204(無內容)響應以指示請求成功。

HTTP/1.1 204 No Content
Content-Location: /existing.html

什麼是 PATCH 請求?

PATCH 方法僅部分修改資源的元素。PATCH 方法以原子方式執行請求的修改。這意味著如果伺服器無法容納所有請求的修改,則不會修改目標實體。

在這種方法中,如果請求正確執行,伺服器會向客戶端傳送成功程式碼 204。否則,伺服器將返回錯誤程式碼。客戶端需要更新的欄位只會更新,其餘欄位保持不變。

語法

PATCH /file.txt HTTP/1.1

示例

PATCH /file.txt HTTP/1.1
Host: www.example.com
Content-Type: application/example
If-Match: "e0023aa4e"
Content-Length: 100

2xx 狀態程式碼表示成功響應。

由於響應不包含有效負載正文,因此以下示例中使用 204 響應程式碼。200 程式碼響應中可能存在有效負載正文。

響應

HTTP/1.1 204 No Content
Content-Location: /file.txt
ETag: "e0023aa4f"

PUT 和 PATCH 請求的區別

下表重點介紹了 PUT 和 PATCH 請求的主要區別

PUT

PATCH

PUT 是一種更新資源的技術,客戶端傳送更新整個資源的資料

PATCH 是一種資源修改方法,客戶端傳輸更新的部分資料,而不更改完整資料

HTTP 的 PUT 方法是冪等的。因此,您在多次重試請求後進行的每次請求轉換都算作一個請求

HTTP 請求的 PATCH 方法是非冪等的。因此,如果您多次嘗試請求,最終將獲得多個資源,每個資源都有不同的 URI

使用 PUT 請求,客戶端請求替換所包含的實體,該實體被視為儲存在原始伺服器上的資源的更改版本

PATCH 提供一組說明,指定如何部分修改儲存在原始伺服器上的資源以生成新版本

PUT 方法的頻寬較高

PATCH 的頻寬相對較小

結論

PUT 和 PATCH 都修改已存在的資料,但由於冪等性,它們以不同的方式進行。由於並非所有伺服器都接受 PATCH,因此 PUT 比 PATCH 更常用。因為它們提供編輯記錄的指令,並且是部分更新而不是像 PUT 請求那樣完全替換記錄,所以 PATCH 請求可能會導致意外結果。

更新於:2023年7月12日

847 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告