229

PUTRails アプリケーションでリクエストを使用しています。現在、新しい HTTP 動詞PATCHがブラウザーによって実装されています。PATCHしたがって、とPUTrequestsの主な違いは何か、またいつどちらを使用する必要があるかを知りたいです。

4

10 に答える 10

131

私はグーグルで数時間を過ごし、ここで答えを見つけました

PUT => ユーザーがレコードのすべてまたは一部のみを更新できる場合は、 PUT を使用します (更新対象をユーザーが制御します)

PUT /users/123/email
new.email@example.org

PATCH => ユーザーが部分的なレコードしか更新できない場合、たとえば電子メール アドレスのみを更新する場合 (アプリケーションが更新できるものを制御します)、PATCH を使用します。

PATCH /users/123
[description of changes]

どうしてPatch

PUTメソッドは、部分的にではなく、より多くの帯域幅を必要とするか、完全なリソースを処理します。そのPATCHため、帯域幅を削減するために導入されました。

PATCHについての説明

PATCH安全でも冪等でもないメソッドであり、完全または部分的な更新と他のリソースへの副作用を可能にします。

PATCHエンティティに囲まれたメソッドで、現在オリジン サーバーに存在するリソースを変更して新しいバージョンを生成する方法を説明する一連の命令が含まれています。

PATCH /users/123
[
  { "op": "replace", "path": "/email", "value": "new.email@example.org" }
]

put と patch の詳細はこちら

于 2015-02-17T09:46:51.293 に答える
24

HTTP プロトコルの POST、PUT、PATCH メソッドの違いは次のとおりです。

役職

HTTP.POST メソッドは、常にサーバー上に新しいリソースを作成します。これは冪等でないリクエストです。つまり、ユーザーが同じリクエストを 2 回ヒットすると、制約がなければ別の新しいリソースが作成されます。

http post メソッドは、常にデータベースに新しいレコードを作成する SQL の INSERT クエリに似ています。

例: POST メソッドを使用して、バックエンド サーバーが新しいリソースのリソース ID を決定する新しいユーザー、注文などを保存します。

置く

HTTP.PUT メソッドでは、最初にリソースが URL から識別され、存在する場合は更新され、存在しない場合は新しいリソースが作成されます。ターゲット リソースが存在する場合、そのリソースは完全に新しい本体で上書きされます。つまり、HTTP.PUT メソッドを使用してリソースを作成または更新します。

http put メソッドは、指定されたレコードが存在するかどうかに応じてレコードを挿入または更新する SQL の MERGE クエリに似ています。

PUT リクエストはべき等です。つまり、同じリクエストを 2 回ヒットすると、既存の記録が更新されます (新しいレコードは作成されません)。PUT メソッドでは、リソース ID はクライアントによって決定され、リクエスト URL で提供されます。

例: PUT メソッドを使用して、既存のユーザーまたは注文を更新します。

パッチ

HTTP.PATCH メソッドは、リソースの部分的な変更、つまりデルタ更新に使用されます。

http パッチ メソッドは、行全体ではなく、選択した列のみを設定または更新する SQL の UPDATE クエリに似ています。

例: PATCH メソッドを使用して注文ステータスを更新できます。

パッチ /api/users/40450236/order/10234557

リクエスト本文: {status: 'Delivered'}

于 2019-04-22T06:48:24.067 に答える