PUT と POST – それらの違い
PUT と POST の主な違い
- 単一のリソースを変更する必要がある場合は PUT メソッドが呼び出され、子リソースを追加する必要がある場合は POST メソッドが呼び出されます。
- POST メソッドの応答はキャッシュできますが、PUT メソッドの応答はキャッシュできません。
- PUT では UPDATE クエリを使用でき、POST では作成クエリを使用できます。
- PUT メソッドでは、クライアントがどの URI リソースを持つ必要があるかを決定し、POST メソッドでは、サーバーがどの URI リソースを持つ必要があるかを決定します。
- PUT は具体的として機能しますが、POST は抽象として機能します。
- 同じ PUT リクエストを複数回送信した場合、結果は同じままですが、同じ POST リクエストを複数回送信した場合は、異なる結果が返されます。
- PUT メソッドは冪等ですが、POST メソッドは冪等ではありません。

PUTメソッドとは何ですか?
PUT メソッドは、サーバー上で利用可能なリソースを更新するために使用されます。 通常、ターゲット URL に存在するものはすべて別のものに置き換えられます。 これを使用して、新しいリソースを作成したり、既存のリソースを上書きしたりできます。 PUT は、囲まれたエンティティを、指定された要求された URI (Uniform Resource Identifier) の下に保存する必要があることを要求します。
POSTメソッドとは何ですか?
POST は HTTP でサポートされているメソッドであり、
Web サーバーが、要求されたメッセージ本文に含まれるデータを受け入れることを示しています。 POST は、ユーザーが生成したデータを Web サーバーに送信するとき、またはファイルをアップロードするときに World Wide Web でよく使用されます。
REST API の PUT と POST の違い
PUT メソッドと POST メソッドの重要な違いは次のとおりです。
PUT | POST |
---|---|
このメソッドはべき等です。 | このメソッドはべき等ではありません。 |
PUT メソッドは、すでにリソース コレクションの一部となっている単一のリソースを変更する必要がある場合に呼び出されます。 | POST メソッドは、リソース コレクションに子リソースを追加する必要がある場合に呼び出されます。 |
RFC-2616 では、PUT メソッドが、指定されたリクエスト URI に格納されている囲まれたエンティティに対するリクエストを送信することが示されています。 | このメソッドは、リクエストに含まれるエンティティを受け入れるようにサーバーに要求します。 |
PUT メソッドの構文は PUT /questions/{question-id} です。 | POST メソッドの構文は POST /questions です。 |
PUT メソッドの応答をキャッシュすることはできません。 | POSTメソッドの応答をキャッシュできます。 |
PUT /vi/juice/orders/1234 は、「1234」で識別されるリソースを更新していることを示します。 | POST /vi/juice/orders は、新しいリソースを作成していることを示し、リソースを説明する識別子を返します。 |
同じリクエストを複数回送信しても、結果は同じままになります。 | 同じ POST リクエストを複数回送信すると、異なる結果が返されます。 |
PUT は特定のものとして機能します。 | 作品を抽象として POST します。 |
PUTではUPDATEクエリを使用します。 | POSTではcreateクエリを使用します。 |
PUT メソッドでは、クライアントがどの URI リソースを持つ必要があるかを決定します。 | POST メソッドでは、サーバーがどの URI リソースを持つ必要があるかを決定します。 |
PUTの例
Web サーバーの PUT メソッドの例を次に示します。
HTTP PUT http://www.google.com/users/234
HTTP PUT http://www.google.com/users/234/accounts/567
リクエスト
PUT /new.html HTTP/1.1 Host: example.com Content-type: text/html Content-length: 20 <p>New File</p>
Responses
ターゲット リソースが現在の表現を持ち、囲まれた表現の状態で変更される場合、サーバーは 200 つの応答を送信する必要があります。 最初の応答コードは 204 (OK)、XNUMX 番目の応答コードは XNUMX (コンテンツなし) です。
ターゲット リソースに表現がない場合、サーバーは 201 コード (Created) 応答を送信してユーザーに通知する必要があります。
HTTP/1.1 201 Created Content-Location: /new.html
POSTの例
POST メソッドの例を次に示します。
HTTP POST http://www.google.com/users
HTTP POST http://www.google.com/users/234/accounts
デフォルトの application/x-www-form-urlencoded コンテンツ タイプを使用するフォーム:
POST /test HTTP/1.1 Host: abc.example Content-Type: application/x-www-form-urlencoded Content-Length: 40 field1=value1&field2=value2
PUT リクエストによる API のテスト
PUT リクエストで API をテストする手順は次のとおりです。
ステップ1) PUTリクエストでリソースを更新します。
ステップ2) リソースにはGETメソッドを使用します。 PUT リクエストが成功すると、新しいデータを受け取ります。 リクエストで指定されたデータが無効な場合、このメソッドは失敗します。 したがって、何も更新されません。
POST リクエストを使用した API のテスト
POST リクエストで API をテストする手順は次のとおりです。
ステップ1) POST リクエストを使用してリソースを作成し、ステータス コード 200 が返されることを確認します。
ステップ2) そのリソースに対して GET リクエストを作成し、データを正しい形式で保存します。
ステップ3) POST リクエストが間違ったデータで失敗することを確認するテストを追加する必要があります。
PUT メソッドの利点
PUT メソッドを使用する利点と利点は次のとおりです。
- 提供されたエンティティを提供された URI に保存するのに役立ちます
- 指定されたエンティティがすでに存在する場合は、更新操作を実行するか、その URI を使用して作成することができます。
- リソースは何度でも作成できます。
- PUT メソッドを使用したリソースの作成は非常に簡単です。
- ユーザーが送信ボタンを複数回クリックしたかどうかを確認する必要はありません。
- リクエストに含まれるエンティティを識別できます。
POSTメソッドのメリット
POST メソッドを使用する利点と利点は次のとおりです。
- このメソッドは、リソース URI を決定するのに役立ちます。
- 新しいリソースの場所ヘッダーの指定は、場所ヘッダーを使用すると非常に簡単です。
- URI で識別されるリソースの新しい従属としてエンティティを受け入れるリクエストを送信できます。
- ユーザーが生成したデータを Web サーバーに送信できます。
- リソースを保存する URL がわからない場合に非常に便利です。
- リソースの URL 生成を制御するサーバーが必要な場合は、POST を使用します。
- POST は、リクエストがブラウザーの履歴に残らないため、安全なメソッドです。
- ポストを使用すると、大量のデータを簡単に送信できます。
- データをプライベートに保つことができます。
- このメソッドは、ASCII データだけでなくバイナリ データも送信するために使用できます。