情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

ウェブ開発者なら必ず知っておくべき基礎知識(2)URI(URL)の構文

URI(URL)には下のような構成要素を特定の区切り文字を使用して順番に記述します。

  • スキーム
  • ホスト
  • ポート
  • パス
  • クエリ
  • フラグメント

上の構成要素を全て含むURIの例としては下のようなものがあります。

  • http://www.abc.org:1234/foo/bar.txt?param1=a&param2=b#fragment

スキーム

上で例示したURI(http://www.abc.org:1234/foo/bar.txt?param1=a&param2=b#fragment)で言えばhttpの部分です。

スキームとは日本語では「方式」という意味ですが、URIにおいてはURIの種類を表します。

URIには必ず先頭にスキームを記述しなければなりません。また、スキームの後には区切り文字として:を付加しなければなりません

主なスキームには下のようなものがあります。

  • http・・・HTTPプロトコル上のリソースを表します。
  • https・・・HTTPSプロトコル上のリソースを表します。
  • file・・・ファイルシステム上のリソースを表します。

スキームの大文字と小文字は区別されませんが、小文字のみを使用するべきであり、大文字は使用するべきではありません

ホスト

上で例示したURI(http://www.abc.org:1234/foo/bar.txt?param1=a&param2=b#fragment)で言えばwww.abc.orgの部分です。

ホストとは日本語では「主人」という意味ですが、URIにおいてはリソースを提供しているサーバを表す文字列です。

ホストはスキームの次に記述しなければなりません。また、ホストの前には区切り文字として//を付加しなければなりません

ホストにはIPv4のアドレスかIPv6のアドレスかホスト名を記述することができます。ただし、IPv6のアドレスを記述する場合には[]で囲まなければなりません。

ホストの大文字と小文字は区別されませんが、小文字のみを使用するべきであり、大文字は使用するべきではありません

ホスト名には英数字の他に下のような文字を使用することができます。

  • -
  • .
  • _
  • ~

これ以外の文字を使用する場合にはパーセントエンコード(URLエンコード)を行わなければなりません

パーセントエンコードについては下の記事を参照してください。

ポート

上で例示したURI(http://www.abc.org:1234/foo/bar.txt?param1=a&param2=b#fragment)で言えば1234の部分です。

ポートとはリソースを提供しているサーバが通信を待ち受けているポートのことであり、65535までの数値です。

ポートはホストの次に記述しなければなりません。また、ポートの前には区切り文字として:を付加しなければなりません

ただし、ポートは記述しなくても構いません。ポートを記述しなかった場合にはリソースへのアクセスの際にはURIのスキーム毎に定められているデフォルトのポートが使用されます。

デフォルトのポートはURIのスキーム毎に下のように定められています。

  • http・・・80
  • https・・・443

また、ポートがデフォルトのポートと同じである場合には記述するべきではありません。

パス

上で例示したURI(http://www.abc.org:1234/foo/bar.txt?param1=a&param2=b#fragment)で言えばfoo/bar.txtの部分です。

パスとは日本語では「経路」という意味ですが、URIにおいてはリソースを提供しているサーバにおけるリソースの場所を階層的に表す文字列です。

イメージ的にはファイルシステムのパスと同じようなものです。

パスはポートの次に記述しなければなりません(ポートを記述しない場合にはホストの次に記述しなければなりません)。また、パスの前には区切り文字として/を付加しなければなりません

ただし、パスは空でも構いません。

パスの1つ1つの階層をセグメントと言います。パスは上の階層を表すセグメントから順番に全てのセグメントを並べることによって記述します。セグメントの間は/で区切ります。

パスには英数字の他に下のような文字を使用することができます。

  • -
  • .
  • _
  • ~

これ以外の文字を使用する場合にはパーセントエンコード(URLエンコード)を行わなければなりません

クエリ

上で例示したURI(http://www.abc.org:1234/foo/bar.txt?param1=a&param2=b#fragment)で言えばparam1=a&param2=bの部分です。

クエリとは日本語では「照会」という意味ですが、URIにおいてはリソースを提供しているサーバにおけるリソースの場所をパラメータ(キーバリュー形式のデータ)の集まりとして表す文字列です。

クエリはパスの次に記述しなければなりません。また、クエリの前には区切り文字として?を付加しなければなりません

ただし、クエリは記述しなくても構いません。

パラメータはキーとバリューを=で結合することによって記述します。また、複数のパラメータは&で区切ります。

クエリのキーやバリューには英数字の他に下のような文字を使用することができます。

  • -
  • .
  • _
  • ~

これ以外の文字を使用する場合にはパーセントエンコード(URLエンコード)を行わなければなりません

フラグメント

上で例示したURI(http://www.abc.org:1234/foo/bar.txt?param1=a&param2=b#fragment)で言えばfragmentの部分です。

フラグメントとは日本語では「断片」という意味ですが、URIにおいてはリソースの一部分や特定の構成要素を指すための文字列です。

フラグメントはクエリの次に記述しなければなりません(クエリを記述しない場合にはパスの次に記述しなければなりません)。また、フラグメントの前には区切り文字として#を付加しなければなりません

ただし、フラグメントは記述しなくても構いません。

フラグメントには英数字の他に下のような文字を使用することができます。

  • -
  • .
  • _
  • ~

これ以外の文字を使用する場合にはパーセントエンコード(URLエンコード)を行わなければなりません

pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-web