GETとPOSTについて

はじめに


こんにちは。東京アプリケーションシステム第三ソリューション部のM.Jです。

利用者があるホームページに移動するためにURLをブラウザーで作成し、Enterキーを押すと
入力したページに移動します。利用者はURLを入力しただけですが、サーバーではクライアントの要請に応答するための処理を
行えなければなりません。ここでクライアントがサーバーに要請数方法であるHTTP Methodには大きく二つの方法があります。
それがGET方式とPOST方式です。
今回は、このGETとPOSTについて話してみたいと思います。

GET方式


まず、GET方式について話してみましょう。我々が必要な情報を取得するために図書館で本を借りる(GET)ことと同じく、GETはある情報を持ってきて
検索するために使う方式です。

[GET方式の特徴]
・URLに変数(データ)を含めて要請する。
・データをHeader(ヘッダー)に含めて転送する。
・URLにデータが表示されるのでセキュリティーに弱い。
・キャッシングができる。
※キャッシングとは?
1回アクセスしたあと、また要請時早めにアクセスができるようにレジストにデータを保存することです。

GET方式は簡単なデータをURLに入れるように設計された方式でデータを送る量に限界があります。
HTTPはGET方式のURLの長さに限りはありませんが、ブラウザーから最大値を制限しています。
URL形式に合わない名前や値はEncodingして伝えなければいけません。

例)http://www.mangkyu.com/login?id=mang&pw=kyu
GET方式は?マークを基準に左はURL、右のidというkeyにはmangをpwというkeyにはkyuとvalue(値)を転送します。
色んなkeyとvalueを送る際は&で繋げます。
GET方式は最低限のセキュリティがないため、実際ウェブではIDとパスワードなど重要な情報はGET方式は
あまりお勧めしておりません。
そのため、個人情報が含めていない状況でキャッシングを使い、速度を高めたりして利用されます。

POST方式


POSTとは英語で提出する。貼るという意味を持っています。例えば我々がどこか書類を提出するのは我々の情報を提出(POST)し、追加するためにです。
POST方式はデータをサーバに提出し追加または修正するために使う方式です。

[GET方式の特徴]
・URLに変数(データ)を含めず要請する。
・データをBody(ボディ)に含めて転送する。
・URLにデータが表示されないので基本的になセキュリティはされている。
・キャッシングができない。

GET方式はURLにデータを含めて転送しますが、POST方式はbodyにデータを入れて転送します。なのでheader fieldにbodyの
データを説明するContent-Typeというheader fieldが必要となり、どんなタイプなのか書かなければなりません。
データをBodyに含めてることでメッセージなどの長さには制限はありませんが、最大要請時間であるTime Outがありますので
クライアントでページを要請して待つ時間があります。POST方式はデータが漏洩されないのでキャッシングができませんが、
文字列はもちろん、ラジオボタン、テキストボックスなどの値も転送ができます。

まとめ


今回はGETとPOSTについて自分も勉強する気持ちでまとめて作成してみました。
皆さまも一緒に目と通していただければ嬉しいと思います。