1. ホーム
  2. http

[解決済み] POSTとPUT HTTP REQUESTの違いは何ですか?

2022-03-19 21:24:51

質問

どちらもボディ内でサーバーにデータを送信しているようですが、何が違うのでしょうか?

どのように解決するのですか?

HTTPのPUTです。

PUTは、ファイルやリソースを特定のURIに、そしてそのURIに正確に置きます。もしそのURIに既にファイルやリソースがあれば、PUTはそのファイルやリソースを置き換えます。 もし、そこにファイルやリソースがなければ、PUTはそれを作成します。PUTは べき乗 しかし、逆説的ですが、PUTのレスポンスはキャッシュされません。

PUTに関するHTTP 1.1 RFCの場所

HTTP POSTです。

POSTは特定のURIにデータを送信し、そのURIにあるリソースがリクエストを処理することを期待します。 この時点で Web サーバーは、指定されたリソースのコンテキストでデータをどのように処理するかを決定できます。POSTメソッドは べき乗 しかし、POSTレスポンス は、サーバーが適切な Cache-Control と Expires ヘッダを設定する限り、キャッシュ可能です。

HTTPの公式RFCでは、POSTをこう規定しています。

  • 既存リソースのアノテーションを行う。
  • 掲示板、ニュースグループ、メーリングリストにメッセージを投稿すること。 または同様の記事のグループ。
  • 送信結果などのデータブロックを提供する。 フォームをデータ処理プロセスに渡すこと。
  • 追加操作によってデータベースを拡張する。

POSTのためのHTTP 1.1 RFCの場所

POSTとPUTの違い。

RFC自体が、核心的な違いを説明しています。

の基本的な違いは POST と PUT のリクエストは、以下のように反映されます。 の意味の違い Request-URI。POSTリクエストのURIは を識別します。 は、同封のエンティティを処理する。その リソースは、データを受理する プロセス、他のプロセスへのゲートウェイ プロトコル、または はアノテーションを受け付ける。これに対して PUTリクエストのURIは リクエストに同封されたエンティティ --。 ユーザーエージェントは、どのURIが を意図しており、サーバーはそのようなことをしてはならない(MUST NOT)。 を適用しようとする。 他のリソース サーバーが に適用させることができます。 別のURIを使用する場合は、301 (Moved Permanently) 応答を送信しなければならない(MUST)。 は、リクエストをリダイレクトするかどうかに関して、独自の判断を下す。

さらに、もう少し簡潔に。 RFC 7231 第 4.3.4 項 PUT と記載されています(強調)。

4.3.4. PUT

PUT メソッドは、対象リソースの状態を要求する。 created または replaced という表現で定義された状態 をリクエストメッセージペイロードで囲む。

正しい方法を使うこと、無関係なことはさておき。

のメリットの1つは REST ROA SOAPと比較すると、HTTP REST ROAを使用する場合、HTTP動詞/メソッドの適切な使用を推奨していることがわかります。 例えば、PUTは、その場所にリソースを作成する場合にのみ使用します。 そして、リソースを作成または変更するためにGETを使用することは決してありません。