2011-12-14 17 views

答えて

13

POSTとPUTの両方を、さまざまな状況で作成および更新操作に使用できます。 PUTとPOSTの違いは何ですか? 一言で言えば、リソースが生存するURLとリソースの内容全体が分かっている場合にのみ、PUTを使用してください。それ以外の場合は、POSTを使用します。

POSTは信じられないほど一般的な動詞です。安全性や偶像性も保証されておらず、RFCでは比較的緩やかに記述されているため、ほとんど何でも使用することができます。実際には、POSTはごくわずかな約束をしているので、すべての要求POST要求を行うことができます。 GET、PUT、DELETEのように動作します。また、他の動詞ではできないこともいくつかできます。これは、HTTPリクエストのURLとは異なるURLに新しいリソースを作成することができます。 (提案されているが広く受け入れられていないPATCHメソッドでも同様のことができるが)全体を変更することなくリソースの一部を変更することができる。

PUTははるかに限定的な動詞です。これは、完全なリソースを取り、それを指定されたURLに格納します。以前にリソースがあった場合、そのリソースが置き換えられます。そうでない場合は、新しいものが作成されます。これらのプロパティは、素朴な作成操作または更新操作ではないことがある冪等性をサポートしています。私はこれがPUTがそれと同じように定義されている理由かもしれないと思う。これは、クライアントがサーバーに情報を送信することを可能にする冪等の操作です。

参考文献:

  • RFC 2616 - HTTP 1.1
  • RFC 5789 - HTTPのPATCHメソッド
  • Martin Fowler氏、リチャードソン成熟度モデル
+1

ここにあなたが言っていることのかなり良い展開です:[PUTまたはPOSTの残りのストーリー](http://jcalcote.wordpress.com/2008/10/16/put-or-post-the-restストーリー/) –

1

あなたがリクエストボディを同じように送信することができ、それはちょうどあなたのアプリケーションコードによって異なる方法で処理されています...

POST動詞は伝統的に、リソース

PUTを作成するために使用されます動詞は伝統的にリソースを更新するために使用されます

+1

興味深いことに、ここではPOSTが更新に使用されていて、PUTは作成に使用されていることを読みました。ここで受け入れられている回答などhttp://stackoverflow.com/questions/630453/put-vs-post-in-rest – DexCurl

+1

これは実際には標準ではなく会議の問題ですが、私は**何かの具体的な証拠としてここで "受け入れられた"答えを見つけることに頼るつもりはありません** ... http://stackoverflow.com/a/2447740/555384。 ..もし私があなただったら、私は人気の安らぎのアピスを熟読して、彼らがそれをする方法を見るだろう...私はあなたがこの答えが最も一般的に受け入れられると思うだろうと思う。 – jondavidjohn

2

HTTPの観点からは、要求の形式は同じです。

0

PUTは上に新しいリソースをアップロードサーバ。リソースがすでに存在し、異なる場合は置き換えられます。存在しなければ作成されます。

POSTは、サーバー上でアクションをトリガーします。副作用があり、注文のトリガー、データベースの変更、フォーラムでのメッセージの投稿、またはその他の操作に使用できます。

関連する問題