HTTPのキホン
前置き
SinatraでWebアプリケーションを実装するためには、Webの知識が必要になります。
ここでHTTPの基礎を学んでおきましょう
URI・URLとは
URI / URLという言葉は聞いたことがあると思います。
ブラウザにも表示されていますね。
簡単に説明すると、以下のような概念を表します。
URI
Uniform Resource Identifier (統一資源識別子)の略称です。
情報の場所や名前を識別するルールの総称を表します。
URL
Uniform Resource Locator (統一資源位置指定子)の略称です。
情報の場所を識別する書き方のルールを表し、概念的にはURIよりも表す範囲が狭いものです。
URIの構成
ヴァル研究所のホームページ(https://www.val.co.jp/company/outline/index.html)を例に、URIの構成について考えてみましょう。
スキーム
以下の赤字で示した部分をURIスキームと呼びます。
https(スキーム)://www.val.co.jp/company/outline/index.html
スキームはデータにアクセスするためのプロトコル(通信規約)で、一般的なものではhttp
,https
,ftp
などが挙げられます。
ドメイン名・ホスト名・FQDN
ドメイン名・ホスト名は、それぞれ以下の青字・赤字で示した部分のことです。
https://www(ホスト名).val.co.jp(ドメイン名)/company/outline/index.html
ドメイン名
インターネット上でネットワークの場所を一意に特定する文字列で、世界で唯一でなければなりません。
そのため、ドメインには世界中の人が好き勝手に決めて重複しないよう、管理者が存在します。
ホスト名
ドメイン名により特定されるネットワーク上で、コンピュータを一意に特定する文字列です。
FQDN
Fully Qualified Domain Name (完全修飾ドメイン名)の略称で、ホスト名とドメイン名をつなげた文字列です。
つまり、以下の部分を指します。
https://www.val.co.jp(FQDN)/company/outline/index.html
パス
パスは、以下の赤字で示した部分のことです。
https://www.val.co.jp(FQDN)/company/outline/index.html
パスは、FQDNにより特定されるネットワーク上で、リソースの場所を一意に特定する文字列です。
Webアプリケーションを作る上では、このパスの設計が非常に重要になってきます。
Webの仕組み
パラメータ
HTTPリクエストでパラメータを渡す場合には、form
タグを利用します。
1
2
3
<form method="get" action="/result">
<!-- チェックボックスなどを配置 -->
</form>
form
タグには、用途に応じて以下の属性を設定します。
- method: どのメソッドでリクエストを送るかを指定する。
get
とpost
を指定することができる。 - action: リクエストの送信先となるURI(URL)を指定する。
Note : GETとPOSTの違いは?
GET
メソッドは、主にリソースの取得に使われます。GET
メソッドの特徴は、パラメータがURIに直接付加されることです。
例えば、Googleの検索や「駅すぱあと for Web」での経路探索を試してみてください。
送られたパラメータを確認することができます。
一方POST
メソッドは、主として「リソースの作成」の役割を持っています。
こちらはGET
メソッドと違い、フォームに入力した内容などがURI常に現れません。
このため、機密性の高い情報を送る場合に使われます。
また、URIには文字数の制限があるのに対して、POST
で送られる内容には理論上制限がありません。
このため、情報量が多いリクエストを送る場合には、GET
メソッドの代用として用いられる場合もあります。
クエリ文字列
先ほどの note にあるように、GETメソッド
のパラメータはURI上に付加されて送られます。
具体的には、下の赤字で示した部分のようにして送られます。
http://roote.ekispert.net/result?dep_code=22671&arr_code=22313&…
この ?
から始まる文字列を、クエリ文字列 もしくは クエリストリング と呼びます。
クエリ文字列では、パラメータ名と値の対が パラメータ名=値
の組で渡されます。
http://roote.ekispert.net/result?dep_code=22671&arr_code=22313&…
パラメータが複数ある場合、これらの組が&
を区切り文字として列挙されます。
http://roote.ekispert.net/result?dep_code=22671&arr_code=22313&…
ここまでの説明だけでは、わからない部分もあるかと思います。
より詳しくは、13章から、Sinatraで学んでいきましょう!