今回は、Webアプリケーション開発で役立つかもしれない用語について解説していきたいと思います。
はじめに
近年、Webアプリケーションは、さまざまな便利なフレームワークの台頭により、サーバーの仕組みなど深いところまで理解せずとも、比較的容易に開発できるようになってきている。
しかし、フレームワークに頼っていると、いざ問題が発生したときに、原因の特定ができずに自力で問題解決できない状況になってしまう可能性がある。
そこで、今回はWebアプリケーション開発においての問題発生時に役立つかもしれない用語の解説をする。
HTTP
Webアプリケーションを語る上で欠かせないのが、HTTPである。
インターネットにはさまざまな種類のコンピュータがつながっている。WebサーバとWebクライアントが通信を行うには、どのように情報をやりとりするかという取り決めが必要である。この取り決めのことを「通信プロトコル」と呼ぶ。
通信プロトコルとしては、ファイル転送のFTP(File Transfer Protocol)やメッセージ転送のSMTP(Simple Mail Transfer Protocol)などがあるが、これらを参考に考案された、HTMLの転送に適したプロトコルがHTTP (HyperTextTransferProtocol) である。
HTTPはほかのプロトコルと比べ非常にシンプルで実装が簡単なため、広く利用されるようになった。
GETとPOST
利用者がWebアプリケーションへ情報を渡すための方法は2種類ある。
それがGETメソッドとPOSTメソッドである。
GETメソッドはURLのリクエストラインの中にクエリ文字列を指定し、Webサーバに情報を送る。
Webサーバ側は、受け取ったURLのリクエストラインの中のクエリ文字列を認識し、そこに含まれるパラメータをアプリケーションに渡す。
ただ、GETメソッドはURLにパラメータが含まれるため、情報漏洩しやすいという問題や、URLの長さ制限のため、あまり多くの情報を扱えないという問題があった。
そこで登場したのがPOSTメソッドによるパラメータ渡しである。
POSTメソッドはクエリ文字列を使う代わりにメッセージボディを利用してパラメータを渡す。
パラメータがURLに含まれないため、ブラウザのアドレスバーへ表示されることがなく、第三者に見られてしまう可能性が少なくなる。また、メッセージボディには長さの制限がないため、パラメータの量が多い場合でも問題がない。
GETとPOSTの使い分け
GETの問題点を解消したのがPOSTのため、POSTを使えばよいと思うかもしれない。
ただ、GETにも、URLにパラメータが含まれるため、パラメータの保存、再現がしやすいというメリットがある。
高いセキュリティが必要な「ログイン処理」「決済処理」や、クエリ文字列におさまらない「大量送信」などはPOSTメソッド、それ以外の場合はGETメソッドというように使い分けるとよい。
リダイレクトとフォワード
Webページ画像、CSS、ほかのページへのリンク、ボタン、などが含まれている場合、遷移先のURLを指定する必要がある。
遷移先のURLを指定する方法は2つある。
それが、リダイレクトとフォワードだ。
この2つの違いはページ遷移時のブラウザ経由の有無である。
リダイレクトは、サーバからブラウザに遷移先のURLを伝えるのに対し、フォワードはブラウザを通さずにアプリケーションサーバ内で遷移が行われる。
そのため、HTTPリクエストはリダイレクトは2回以上発生するが、フォワードは一回で済む。
それぞれのメリットとしては、フォワードはリクエスト情報を引き継ぎ可能、リダイレクトは遷移先のURLに外部サーバを指定可能、などがあげられる。
CGI
現在のWebアプリケーションが登場するきっかけとなったのがCGIである。
より多くの人にサイトを見てもらうためには、常に新しいコンテンツを提供する必要がある。しかし、コンテンツを常に人間が更新するのは大変である。
そこで、考えられたのがプログラムによってコンテンツを動的に生成する方法である。しかし、動的なコンテンツを生成してWebクライアントに渡すには、Webサーバとコンテンツを生成するプログラムとの連携が必要である。そのための仕組みがCGI(Common Gateway Interface)である。
CGIを用いることにより、Webブラウザからの入力に応じた処理を行うアプリケーションが作成可能となった。
まとめ
今回は、Webアプリケーション開発で役立つかもしれない用語を簡単に解説しました。
クライアントとサーバとのやりとりやサーバの構成なども意識して、問題発生時に落ち着いて対応できる確かなスキルを身に着けていきたいものです。
以上、ありがとうございました。
コメント
[…] GETとPOSTの違いについては、こちらを参照してください。 […]