HTTPプロトコルのPUT、POST、PATCHメソッドの違いは何ですか?
HTTPプロトコルのPUT、POST、PATCHメソッドの違いは何ですか?
回答:
HTTP動詞のPUT、POST、GET、DELETE、PATCHの違い:
最も一般的に使用されるHTTP動詞POST、GET、PUT、DELETEは、データベースでのCRUD(作成、読み取り、更新、削除)操作に似ています。これらのHTTP動詞は大文字で指定します。だから、以下はそれらの間の比較です。
PATCH:リソースに部分的な変更を送信します。リソースの1つのフィールドのみを更新する必要がある場合は、PATCHメソッドを使用できます。
注:
POST、PUT、DELETEはコンテンツを変更するため、以下のURLに対するFiddlerを使用したテストは、更新を模倣するだけです。実際には削除または変更されません。ステータスコードを確認して、挿入、更新、削除が発生しているかどうかを確認できます。
URL: http : //jsonplaceholder.typicode.com/posts/
1)GET:
GETは最も単純なタイプのHTTPリクエストメソッドです。リンクをクリックするか、アドレスバーにURLを入力するたびにブラウザが使用するもの。URLで識別されるデータをクライアントに送信するようサーバーに指示します。GETリクエストの結果としてサーバー側でデータが変更されることはありません。この意味で、GET要求は読み取り専用です。
FiddlerまたはPostManでの確認: 応答の確認にFiddlerを使用できます。Fiddlerを開き、[作成]タブを選択します。以下に示すように動詞とURLを指定し、[実行]をクリックして応答を確認します。
動詞: GET
URL: http : //jsonplaceholder.typicode.com/posts/
応答:次のような応答が返されます。
"userId":1、 "id":1、 "title": "sunt aut ..."、 "body": "quia et suscipit ..."
「ハッピー」(またはエラーではない)パスでは、GETはXMLまたはJSONの表現と200(OK)のHTTP応答コードを返します。エラーの場合、ほとんどの場合、404(見つかりません)または400(不良要求)を返します。
2)POST:
POST動詞は、主に新しいリソースを作成するために使用されます。特に、従属リソースの作成に使用されます。つまり、他のリソース(親など)に従属します。
正常に作成されたら、HTTPステータス201を返します。201HTTPステータスで新しく作成されたリソースへのリンクを含むLocationヘッダーを返します。
FiddlerまたはPostManでの確認: 応答の確認にFiddlerを使用できます。Fiddlerを開き、[作成]タブを選択します。以下に示すように動詞とURLを指定し、[実行]をクリックして応答を確認します。
動詞: POST
URL: http : //jsonplaceholder.typicode.com/posts/
リクエスト本文:
データ:{タイトル: 'foo'、本体: 'bar'、userId:1000、Id:1000}
応答:応答コード201を受け取ります。
Id = 1000で挿入されたレコードを確認する場合は、動詞をGetに変更して同じURLを使用し、[実行]をクリックします。
前述のように、上記のURLでは読み取り(GET)のみが許可されており、更新されたデータを実際に読み取ることはできません。
3)PUT:
PUTは、ほとんどの場合、更新機能に使用されます。元のリソースの新しく更新された表現を含むリクエスト本文を使用して、既知のリソースURIにPUTします。
FiddlerまたはPostManでの確認: 応答の確認にFiddlerを使用できます。Fiddlerを開き、[作成]タブを選択します。以下に示すように動詞とURLを指定し、[実行]をクリックして応答を確認します。
動詞: PUT
URL: http : //jsonplaceholder.typicode.com/posts/1
リクエスト本文:
データ:{タイトル: 'foo'、本文: 'bar'、userId:1、Id:1}
応答:更新が成功すると、PUTから200(または本文のコンテンツを返さない場合は204)を返します。
4)削除:
DELETEは非常に理解しやすいです。URIで識別されるリソースを削除するために使用されます。
正常に削除されたら、HTTPステータス200(OK)と応答本文、削除されたアイテムの表現(帯域幅を必要とすることが多い)、またはラップされた応答(以下の戻り値を参照)を返します。それか、応答本文なしでHTTPステータス204(コンテンツなし)を返します。つまり、本文のない204ステータス、またはJSENDスタイルの応答とHTTPステータス200が推奨される応答です。
FiddlerまたはPostManでの確認: 応答の確認にFiddlerを使用できます。Fiddlerを開き、[作成]タブを選択します。以下に示すように動詞とURLを指定し、[実行]をクリックして応答を確認します。
動詞: DELETE
URL: http : //jsonplaceholder.typicode.com/posts/1
応答:正常に削除されると、応答本文とともにHTTPステータス200(OK)を返します。
PUTとPATCHの間の例
置く
名を変更する必要がある場合は、更新のPUTリクエストを送信します。
{"first": "Nazmul"、 "last": "hasan"}したがって、ここで名を更新するには、データのすべてのパラメーターを再度送信する必要があります。
パッチ:
パッチリクエストでは、変更する必要のあるデータのみを送信し、データの他の部分を変更または影響を与えないようにしています。例:名のみを更新する必要がある場合は、名のみを渡します。
詳細については、以下のリンクを参照してください。
https://jsonplaceholder.typicode.com/
https://github.com/typicode/jsonplaceholder#how-to
PUT =リソース全体を提供された新しい表現で置き換えます
PATCH =ソースリソースの一部を提供された値で置き換えるAND | ORリソースのその他の部分を更新していない(タイムスタンプ)AND | ORリソースを更新すると他のリソースに影響(関係)
以下の定義は実際の例からのものです。
例の概要
すべてのクライアントデータについて、そのクライアントデータを見つけるための識別子を保存し、その識別子をそのクライアントに送り返して参照します。
役職
置く
パッチ
注:Putメソッドでは、識別子が見つからない場合でも例外はスローされません。しかし、Patchメソッドでは、識別子が見つからない場合に例外をスローします。
上記について質問がある場合はお知らせください。
GET / PUTはべき等であるPATCHは時々べき等になることがある
べき等とは-クエリを複数回実行しても、クエリの結果に影響を与えないことを意味します(同じ出力。牛が妊娠していると仮定し、再度繁殖させた場合、複数回妊娠することはできません)。
get
:-簡単な取得。サーバーからデータを取得してユーザーに表示する
{
id:1
name:parth
email:x@x.com
}
post
:-データベースに新しいリソースを作成します。新しいデータを追加することを意味します。そのべき等ではありません。
put
:-新しいリソースを作成するか、既存のものに追加します。同じリソースを毎回更新し、出力も同じになるため、べき等です。 例。 -初期データ
{
id:1
name:parth
email:x@x.com
}
{
id:1
email:ppp@ppp.com
}
patch
したがって、パッチリクエストのパッチが時々べき等になる可能性があります
id:1
name:parth
email:x@x.com
}
パッチ名:w
{
id:1
name:w
email:x@x.com
}
HTTPメソッド はいGET POSTいいえ はい パッチなし* オプションはい ヘッドはい 削除はい
リソース:べき等 - べき等とは何ですか?
PUTリクエストとPATCHリクエストの主な違い:
人の名と姓を保持するリソースがあるとします。
名を変更したい場合は、Updateのputリクエストを送信します
{ "first": "Michael", "last": "Angelo" }
ここでは、名だけを変更していますが、PUTリクエストでは、最初と最後の両方のパラメーターを送信する必要があります。
言い換えると、すべての値、つまりペイロード全体を再度送信することが必須です。
ただし、PATCHリクエストを送信する場合は、更新するデータのみを送信します。つまり、更新するために名だけを送信し、姓を送信する必要はありません。
PUTとPATCHが完全なデータと部分的なデータを送信して、それぞれ置換/更新するのはかなり論理的な違いです。ただし、以下のようにいくつかの点
このように考える...
POST-作成
PUT-交換
パッチ-更新
GET-読み取り
削除-削除
最も簡単な説明:
POST-新しいレコードを作成
PUT-レコードが存在する場合は、更新し、新しいレコードを作成します
パッチ-更新
GET-読み取り
削除-削除