私は最近PHP/AJAX/jQueryに関わってきたばかりで、これらの技術の重要な部分はPOST
とGET
のそれであるように思われます。
まず、POST
とGET
の違いは何ですか?実験を通して、GET
は戻り変数とその値をURL文字列に追加することを私は知っています
website.com/directory/index.php?name=YourName&bday=YourBday
しかしPOST
は違います。
それで、これは唯一の違いですか、それともどちらかを使用するための特定の規則または規則がありますか?
第二に、私はPHPの外でもPOST
とGET
を見ました。これはAJAXとjQueryでも同様です。 POST
とGET
は、これら3つの間でどう違うのでしょうか。それらは同じアイディア、同じ機能、違う使い方をしていますか?
POST
は、GET
とは異なり、通常、要求の本文に関連情報を持っています。 (GET
には本文を含めないでください。クッキー以外に、情報を渡す唯一の場所はURLにあります。)URLを比較的きれいに保つことに加えて、POST
を使用すると、さらに多くの情報を送信できます。あらゆる種類のデータを送信することができます(たとえば、ファイルアップロードフォームではGET
を使用できません。POST
と特別なコンテンツタイプ/エンコーディングを使用する必要があります)。
それ以外の点では、POST
はリクエストが何かを変えることを暗示しており、やり直すべきではありません。そのため、「戻る」ボタンを押したときにフォームデータを再送信するかどうかを尋ねるブラウザが表示されることがあります。
一方GET
は、 べき等 - にすることができます。つまり、100万回実行することができます。サーバーは、毎回同じことを実行します(そして基本的に同じ結果を表示します)。
違いの説明ではありませんが、正しい方法を選択する際に考慮すべき点がいくつかあります。
POSTとGETは2つの HTTPリクエストメソッド です。 GETは通常、データを取得することを目的としており、べき乗であることが期待され(クエリを繰り返しても副作用がない)、限られた量のパラメータデータしかサーバに送信できません。注意していない場合、GET要求は多くのブラウザではデフォルトでデフォルトでキャッシュされます。
POSTはサーバーの状態を変更するためのものです。それはより多くのデータを運び、クエリを繰り返すことは1つではなく2つのメッセージを作成するような副作用を持つことが許されます(そしてしばしば期待されます)。
RESTfully で作業している場合は、データを取得するだけのリクエストにはGETを使用し、何かを起こさせるリクエストにはPOSTを使用する必要があります。
いくつかの例:
特定のSO質問を示すページをGETする
コメントを投稿
[カートに追加]ボタンをクリックしてPOSTリクエストを送信します。
POSTを使用すると、マルチパートMIMEエンコードも実行できます。つまり、ファイルを添付することもできます。また、ページ間を移動して投稿変数を使用している場合は、投稿パラメータを再送信するかどうかを尋ねる警告が表示されます。通常、HTTPリクエストでは同じように見えますが、何かをサーバーに "POST"する必要がある場合はPOSTに、サーバーから何かをGETする必要がある場合は "GET"を使用する必要があります。彼らが意図していた方法。
(AJAXで使用する場合)POST&とGETの間の唯一の「大きな」違いは、GETがURLによって提供されるためです。