WordPressのカスタマイズやテーマファイル、プラグインの作り方などデータベース構造から詳しく解説します。

WordPressの動く仕組み(HTTP通信)

初めてのプログラミングでWordPressから挑戦してみる、という方も多いかと思います。
WordPressとプラグインを使えば高機能なメディアサイトが簡単に作れてしまいますが、そもそもWordPressがどのように動いているのか、ご存知ですか?
WordPressのカスタマイズ、そしてWebアプリケーションの基礎となるHTTP通信について、ご説明します。

HTTP通信の基本

HTTP通信とは、Webブラウザとサーバー間でのデータの送受信に用いられている通信方式です。
ブラウザは入力されたURLをもとに、該当するサーバーへHTTPリクエストといわれる情報を送信します。
このリクエストの中には、URL、メソッド(GET,POST,PATCH,DELETEなど)、ユーザーエージェント、cookieなどの情報が含まれます。
サーバー側では受け取ったHTTPリクエストを解析し、リクエストされているファイルの存在を確認、既に存在していないファイルであれば403(not foundを意味する)というサーバーステータスをブラウザへと送り返し、存在している場合は200というステータスコードとともに該当ファイルをブラウザへとレスポンスします。

フォームへの入力項目などはどのように受け渡すの?

ブラウザとサーバー間のデータ通信はHTTP通信でのみ行われます。URLを入力するとそのページの情報がブラウザに表示される、という体験の裏にはHTTPリクエスト/HTTPレスポンスのやりとりがあることを先ほどご説明しました。
それではURLの入力以外、例えば検索キーワードを入力して検索結果が表示される、会員情報をフォームに入力すると会員登録ができる、といった体験はどのように実現されているのでしょうか?こちらもHTTP通信を利用して実現しているのでしょうか?
入力データの受け渡しはHTTP通信の中でも「GET」と「POST」というメソッドを利用して実現されています。

HTTP通信のメソッド

メソッドとは、HTTP通信のタイプのようなものです。サーバー側では、「このURLに対してこのメソッドのリクエストが来たらこんな処理をします」というようにプログラムを記述します。
例えば会員登録・編集画面を思い浮かべてみてください。プログラムの観点からすると、「ユーザーを新規登録する」という処理と「ユーザー情報を編集する」という処理は全く異なるアクションになります。
そのため、それぞれのアクションを要求するHTTPリクエストは当然別々に用意しなければなりません。
ただし、あまりにURLを分けてしまうと煩雑なサイト構成となってしまいます。そこで、このような場合は通常同一のURLに対して、「POST」か「UPDATE」という2つのメソッドのリクエストを状況に応じ分けて送信するようにし、サーバー側ではメソッドごとの処理を記述するというように実装するのが通例です。

入力情報の受け渡し

通常、ブラウザにURLを入力した際にはブラウザは入力URLへのGETリクエストをサーバーへ送信します。
検索キーワードなどの、「情報の秘匿性がほとんど存在しない」、「遷移先ページを共有する可能性がある」パラメーターの受け渡しはGETメソッドでURLクエリとして、個人情報などの秘匿性の高い情報の送信はPOSTメソッドでHTTPリクエストのボディ部分へ埋め込まれて送信されます。

GETメソッドとURLクエリ

http://exaple.com?keyword=’hogehoge’

というような形式のURLを目にした事はありませんか?これがまさにGETメソッドでパラメーターを送信するためのURLです。
この形式のリクエストを受け取ったサーバーは?以降をパラメーターとして認識し、例えばphpであれば

$query = $_GET['keyword']

のように記述する事で、URLの?以降に含まれているパラメーター【keyword:’hogehoge’】を取得して変数$queryへ代入する事が出来ます。あとはこの$queryを使って検索の処理を実装することで、検索結果画面の表示を行います。

POSTメソッドとHTTPリクエストのボディ

GETメソッドでのパラーメータの受け渡しは、非常にシンプルで汎用的です。また、URLにパラメーターが含まれているという性質上、パラメーター付きのURLを友人に共有する、などすることで検索結果画面を共有する事が可能です。
(Google検索もGETメソッドで実現されているため、検索結果画面の共有が可能です)
しかし、個人情報の入力などを行う場面を想定すると、これではあまりにセキュリティが脆弱です。
そんなときにはPOSTというメソッドを使います。
POSTメソッドではURLに明示的なパラメーターを含むのではなく、ブラウザ上では表示されないHTTPリクエストのボディ部分にパラメーターを埋め込んで、入力情報を送信します。

まとめ

全てのWebアプリケーションで利用されているHTTP通信の仕組みについてご説明しました。
検索キーワードなど、秘匿性の低く共有する可能性のある情報の入出力はGETメソッドで、それ以外の個人情報などはPOSTメソッドで実現されているという点を是非覚えておいてください。

関連記事

ページ上部へ戻る