「Web - URI」の版間の差分
(ページの作成:「== 概要 == <br><br> == クエリパラメータ == クエリパラメータを含めた文字列全体はURLである。<br> <br> 例: https://example.com/search.php?keyword=太郎&page=2&sort=desc#section1<br> <br> 上記のURLは以下のような構造に分解できる。<br> これら全ての要素を含めて、1つのURLとして扱う。<br> * スキーム (プロトコル) *: https:// * ホスト名 *: example.com * パス *: /search.php * クエリ文…」) |
(→概要) |
||
1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
URI (Uniform Resource Identifier) とは、インターネット上のリソースを一意に特定するための識別子であり、統一資源識別子と訳される。<br> | |||
<br> | |||
URIは、スキームと呼ばれる部分から始まる。<br> | |||
例えば、https:// や ftp:// といったプロトコルである。<br> | |||
<br> | |||
このスキームの後に、実際のリソースを特定するための情報が続く。<br> | |||
https://www.example.com:8080/path/to/resource?key=value#section<br> | |||
<br> | |||
上記の例では、httpsがスキーム、www.example.comがホスト名 (ドメイン名)、8080がポート番号を表す。<br> | |||
その後のパス (/path/to/resource) は、サーバ上の特定のリソースの場所を示す。<br> | |||
クエリパラメータ (?key=value) では追加の情報を渡しており、フラグメント (#section) は文書内の特定の場所を指定する。<br> | |||
<br> | |||
URIの重要な特徴は、柔軟性と拡張性である。<br> | |||
インターネット上のあらゆるリソースを識別できるよう設計されており、Webページのアドレスだけでなく、メールアドレス (mailto:) やファイル共有プロトコル (ftp:) 等も表現できる。<br> | |||
<br> | |||
また、URIは人間が読める形式であることも特徴である。<br> | |||
例えば、https://www.example.com/products/books というURIでは、exampleドメインの製品カテゴリーの中の書籍に関するページであることが推測できる。<br> | |||
<br> | |||
ただし、URIには制約もある。<br> | |||
使用できる文字は限られており、特殊文字や空白等は適切にエンコードする必要がある。<br> | |||
例えば、スペースは「%20」として表現される。<br> | |||
<br><br> | |||
== URI (Uniform Resource Identifier) == | |||
リソースを一意に識別するための文字列の形式である。<br> | |||
URLとURNの上位概念として位置づけられる。<br> | |||
<br> | |||
URIは、以下に示す形式で表現される。<br> | |||
<スキーム名>:<スキーム依存部分> | |||
<br><br> | |||
== URL (Uniform Resource Locator) == | |||
リソースの場所を指定する形式である。<br> | |||
URIの一種であり、主に、Web上のリソースのアドレスを表現する。<br> | |||
<br> | |||
URLは、以下に示す要素で構成される。<br> | |||
* スキーム (プロトコル) | |||
* ホスト名 | |||
* ポート番号 (省略可) | |||
* パス | |||
* クエリパラメータ (省略可) | |||
* フラグメント (省略可) | |||
<br><br> | |||
== URN (Uniform Resource Name) == | |||
リソースの名前を指定する形式である。 | |||
場所に依存せず、永続的な識別子として機能する。<br> | |||
<br> | |||
例: ISBN番号やUUID等<br> | |||
<br><br> | |||
== URIとURLの違い == | |||
主な違いを以下に示す。<br> | |||
* URLは、<u>どこにあるか</u>を示すものである。 | |||
* URNは、<u>何であるか</u>を示すものである。 | |||
* 全てのURLはURIであるが、全てのURIがURLというわけではない。 | |||
* URLは場所が変更されると機能しなくなる可能性があるが、URNは永続的である。 | |||
<br> | |||
URIは識別子の大きな枠組みを提供しており、その中でURLは場所、URNは名前を指定する役割を果たす。<br> | |||
<br> | |||
==== URLの例 ==== | |||
https://www.example.com:8080/path/to/page?id=123#section1<br> | |||
<br> | |||
* スキーム | |||
*: https | |||
* ホスト名 (ドメイン名) | |||
*: www.example.com | |||
* ポート | |||
*: 8080 | |||
* パス | |||
*: /path/to/page | |||
* クエリパラメータ | |||
*: id=123 | |||
* フラグメント | |||
*: section1 | |||
<br> | |||
以下に示す記述もURLである。<br> | |||
mailto:example@example.com<br> | |||
<br> | |||
* スキーム | |||
*: mailto | |||
* スキーム依存部分 | |||
*: example@example.com | |||
<br> | |||
mailtoは、以下に示す理由からURLに分類される。<br> | |||
* リソースへのアクセス方法 (メールクライアントの起動) を指定している。 | |||
* 操作可能なアクション (メール送信) を提供している。<br>mailtoは、メールクライアントを起動するための操作的なスキームである。 | |||
* URNのような永続的な識別子ではなく、mailtoは通信手段を示している。 | |||
<br> | |||
==== URN (URLではないURI) の例 ==== | |||
urn:isbn:0-486-27557-4<br> | |||
<br> | |||
* スキーム | |||
*: urn | |||
* 識別子タイプ | |||
*: isbn | |||
* 識別番号 | |||
*: 0-486-27557-4 | |||
<br> | |||
以下に示す記述もURNである。<br> | |||
# 書籍のISBN (ISBNは本を一意に識別する) | |||
isbn:0-486-27557-4 | |||
# UUID (UUIDはグローバルにユニークな識別子) | |||
uuid:550e8400-e29b-41d4-a716-446655440000 | |||
# 法人識別子 (LEIは金融機関を一意に識別する) | |||
lei:969500P37YF46QNWK024 | |||
<br><br> | <br><br> | ||
2024年11月12日 (火) 00:52時点における版
概要
URI (Uniform Resource Identifier) とは、インターネット上のリソースを一意に特定するための識別子であり、統一資源識別子と訳される。
URIは、スキームと呼ばれる部分から始まる。
例えば、https:// や ftp:// といったプロトコルである。
このスキームの後に、実際のリソースを特定するための情報が続く。
https://www.example.com:8080/path/to/resource?key=value#section
上記の例では、httpsがスキーム、www.example.comがホスト名 (ドメイン名)、8080がポート番号を表す。
その後のパス (/path/to/resource) は、サーバ上の特定のリソースの場所を示す。
クエリパラメータ (?key=value) では追加の情報を渡しており、フラグメント (#section) は文書内の特定の場所を指定する。
URIの重要な特徴は、柔軟性と拡張性である。
インターネット上のあらゆるリソースを識別できるよう設計されており、Webページのアドレスだけでなく、メールアドレス (mailto:) やファイル共有プロトコル (ftp:) 等も表現できる。
また、URIは人間が読める形式であることも特徴である。
例えば、https://www.example.com/products/books というURIでは、exampleドメインの製品カテゴリーの中の書籍に関するページであることが推測できる。
ただし、URIには制約もある。
使用できる文字は限られており、特殊文字や空白等は適切にエンコードする必要がある。
例えば、スペースは「%20」として表現される。
URI (Uniform Resource Identifier)
リソースを一意に識別するための文字列の形式である。
URLとURNの上位概念として位置づけられる。
URIは、以下に示す形式で表現される。
<スキーム名>:<スキーム依存部分>
URL (Uniform Resource Locator)
リソースの場所を指定する形式である。
URIの一種であり、主に、Web上のリソースのアドレスを表現する。
URLは、以下に示す要素で構成される。
- スキーム (プロトコル)
- ホスト名
- ポート番号 (省略可)
- パス
- クエリパラメータ (省略可)
- フラグメント (省略可)
URN (Uniform Resource Name)
リソースの名前を指定する形式である。
場所に依存せず、永続的な識別子として機能する。
例: ISBN番号やUUID等
URIとURLの違い
主な違いを以下に示す。
- URLは、どこにあるかを示すものである。
- URNは、何であるかを示すものである。
- 全てのURLはURIであるが、全てのURIがURLというわけではない。
- URLは場所が変更されると機能しなくなる可能性があるが、URNは永続的である。
URIは識別子の大きな枠組みを提供しており、その中でURLは場所、URNは名前を指定する役割を果たす。
URLの例
https://www.example.com:8080/path/to/page?id=123#section1
- スキーム
- https
- ホスト名 (ドメイン名)
- www.example.com
- ポート
- 8080
- パス
- /path/to/page
- クエリパラメータ
- id=123
- フラグメント
- section1
以下に示す記述もURLである。
mailto:example@example.com
- スキーム
- mailto
- スキーム依存部分
- example@example.com
mailtoは、以下に示す理由からURLに分類される。
- リソースへのアクセス方法 (メールクライアントの起動) を指定している。
- 操作可能なアクション (メール送信) を提供している。
mailtoは、メールクライアントを起動するための操作的なスキームである。 - URNのような永続的な識別子ではなく、mailtoは通信手段を示している。
URN (URLではないURI) の例
- スキーム
- urn
- 識別子タイプ
- isbn
- 識別番号
- 0-486-27557-4
以下に示す記述もURNである。
# 書籍のISBN (ISBNは本を一意に識別する) isbn:0-486-27557-4 # UUID (UUIDはグローバルにユニークな識別子) uuid:550e8400-e29b-41d4-a716-446655440000 # 法人識別子 (LEIは金融機関を一意に識別する) lei:969500P37YF46QNWK024
クエリパラメータ
クエリパラメータを含めた文字列全体はURLである。
例: https://example.com/search.php?keyword=太郎&page=2&sort=desc#section1
上記のURLは以下のような構造に分解できる。
これら全ての要素を含めて、1つのURLとして扱う。
- スキーム (プロトコル)
- https://
- ホスト名
- example.com
- パス
- /search.php
- クエリ文字列
- ?keyword=太郎&page=2&sort=desc
- フラグメント識別子
- #section1
※注意
クエリパラメータを含む完全なURL文字列は、以下に示すような特徴があることに注意する。
ただし、セキュリティ上の理由から、パスワード等の機密情報をURLのクエリパラメータに含めることは避けるべきである。
- 有効なURLとして扱われる。
- プログラムで解析可能。
- Webブラウザで正しく解釈される。
- 文字エンコーディング
// 日本語等の場合はURLエンコードが必要 $encodedKeyword = urlencode("太郎"); $url = "https://example.com/search.php?keyword=" . $encodedKeyword;
- 複数パラメータの結合
// クエリパラメータは、&で連結 $params = [ 'keyword' => '太郎', 'page' => 2, 'sort' => 'desc' ]; $queryString = http_build_query($params); $url = "https://example.com/search.php?" . $queryString;
- 最大長の制限
- Webブラウザによって異なるが、通常2,000〜8,000文字程度
- 長すぎるクエリは、POSTメソッドを使用する。
- PHPでの取り扱い例
// URLの解析 $url = "https://example.com/search.php?keyword=太郎&page=2"; $parsedUrl = parse_url($url); print_r($parsedUrl); // 出力 Array ( [scheme] => https [host] => example.com [path] => /search.php [query] => keyword=太郎&page=2 )
- クエリ文字列の解析
parse_str($parsedUrl['query'], $queryParams); print_r($queryParams); // 出力 Array ( [keyword] => 太郎 [page] => 2 )