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タグを利用します。

sample.html
1
2
3
<form method="get" action="/result">
  <!-- チェックボックスなどを配置 -->
</form>

formタグには、用途に応じて以下の属性を設定します。

  • method: どのメソッドでリクエストを送るかを指定する。getpostを指定することができる。
  • 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で学んでいきましょう!