1

HTTP メソッドに関するいくつかの情報源を読みましたが、最も単純なことをまだ明確に理解していません。それらは何のためにあるのでしょうか?

私が見た各ソースは、特定の方法を使用する必要がある場合を指摘していますが、実際には何が変わるのでしょうか? たとえば、GET と POST の間でリクエストが処理される方法に違いはありますか?

それとも、1 つの URL で複数の動作を処理できるようにするために、これらのメソッドが存在するのでしょうか?

最後に、ブラウザについてはどうでしょうか。フォームは GET および POST リクエストのみを作成でき、それらを異なる方法で処理します。POST フォームは「バックグラウンドで」データを送信しますが、GET はそれらを URL で渡します。プロトコルと関係がありますか、それとも単なるブラウザの慣例ですか?

私のためにそれを明確にしてくれてありがとう。:)

4

1 に答える 1

3

基本的に、はい、すべての「エンティティ」との異なる「相互作用」を可能にするメソッドがあります。HTTP は、各 URL を 1 つのエンティティとして考えることができるように設計されています。

  • /usersすべてのユーザーを表します
  • /users/dave1 人の特定のユーザーを表します
  • POST /users新しいユーザーを作成できます
  • PUT /users/dave特定のユーザーを変更できます
  • GET /usersユーザーのリストを取得します
  • GET /users?name=dave「dave」という名前のユーザーのリストを照会できます

等々...

HTTP はこのように使用されるように設計されており、各動詞には特定の暗黙の意味があります。これらの動詞は本当に好きなように使用できますが、GET「受動的な」情報検索を意味し、 while POSTPUTおよびDELETE破壊的な変更を意味します。

ブラウザーと他のクライアントでは、これらの処理が異なります。いつでも何GET回でもリクエストでき、キャッシュでき、プリフェッチでき、ほとんど順不同でクエリできることが期待されます。より破壊的なアクションは、要求されたときに 1 回だけ実行する必要があり、キャッシュ、プリフェッチなどは行わないでください。経由でリクエストされたページを「リロード」している場合、ブラウザは明示的に確認を求めますPOST

POST フォームは「バックグラウンドで」データを送信しますが、GET はそれらを URL で渡します。プロトコルと関係がありますか、それとも単なるブラウザの慣例ですか?

「裏で」というのは間違った考え方です。違いは、URLリクエストの本文です。リクエストは、そのGETリクエスト本文に何も含めるべきではありません/含めてはなりません。繰り返しになりますが、これは受動的な情報取得のみであり、HTTP ヘッダーのみで構成されている必要があります。POSTリクエストにはリクエストボディを含めることができます。リクエストの URLと本文の両方に「データ」を含めることができます。GET繰り返しになりますが、 URL は単に情報にリンクしているだけなので、URL は共有して渡すことができると想定されています。POST一方、リクエストは慎重に行う必要があるため、その情報を URL に含める必要はありません。

于 2015-02-16T01:51:00.543 に答える