タイトル
「ホームページのサーバから情報を取得する HTTPメソッド」
【説明】GET / GETメソッドとは
要約すると
つまりブラウザでURLを入力し検索するとき無意識にGETメソッドを使っています。
【メリット】
GETを使うとどのような処理をしていたとしてもクライアントには安全なAPIだと見なされます。
これは、クライアントからはサーバがどのような処理をやっているかを知ることはできないためです。
【特徴】
GET送信の方法は、パラメータが明示的というのが特徴です。
そのため「パラメータを見れば、ページの遷移や、行われている処理がわかる」というメリットの反面、「パスワードなど個人情報であっても筒抜けになる」というデメリットも生じます。
GETの場合、URL内部にパラメータが組み込まれるので、ブラウザの履歴やキャッシュが残ります。POSTは残らないので、機密性が高いと言えなくもありませんが、結局、パケットは平文で流れるので、機密性について考える場合は、どちらにしても別途、暗号化の仕組みを取り入れる必要があります。
【使用場面】
仕様で安全かつ冪等であると定義されているため、基本的に読み取り専用な機能に対して使うべきメソッドになります。
【サンプル】URLの構成とGET送信
例えば以下のような「パスワードを入力して専用ページにログイン」するための、ログイン用URLを例に構成を見ます。
https://○○○○.jp/login.php?lang=ja&args=
プロトコル://ドメイン/表示ファイル名?パラメータ=データ&パラメータ=なし
どのURLもだいたいこのような構成になっています。ログインの流れとしては
- パラメータにデータを入れて渡すことによって、リクエストを行います。
- Webサーバーは渡されたデータによって「ログインが成功か否か」といった何らかのレスポンスを行います。
GET送信 (パラメータに直接データを入力してリクエスト)
上記のコードであればログイン用URLを見ると、 パラメータ = なし となっている部分がありました。
なし の部分にデータを入れてパラメータとして渡すと、データに誤りがなければログインが成功します。
パラメータ部分に直接データを入力してリクエストする方法が GET送信 です。
https://○○○○.jp/login.php?lang=ja&args=password
パラメータはソースコード上で取り出すことができます。
HttpServletRequestインタフェースの、 requestオブジェクト を使用してパラメータを読み込みます。
getParameter() / getParameterメソッド
クライアント側のフォームから送られてきたデータ(リクエストパラメータ)は「名前」と「値」のペアで送られてきます。
リクエストパラメータを取得するには「getParameter」メソッドを使います。
リクエストパラメータの「名前」を引数に指定すると「値」を取得することが出来ます。
String value = request.getParameter("args");