URI
URI
URIの構成
- URIはscheme, authority, path, query, fragmentの5つのコンポーネントから構成される
- scheme, authority, pathは必須
- query, fragmentはオプション
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
scheme
- schemeはURIの種類を表す
- schemeは大文字小文字を区別しない
- schemeは英数字と
+
,-
,.
のみを使用する - schemeは
:
で終わる - schemeは
//
で始まる - schemeは
//
の後にauthorityが続く場合と続かない場合がある - schemeは
//
の後にauthorityが続かない場合はpathから始まる
scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
authority
- authorityはユーザー情報、ホスト、ポート番号から構成される
- authorityは
@
で区切られたユーザー情報、ホスト、ポート番号の順に記述される - authorityは
@
がない場合はホストから始まる - authorityは
@
がない場合はユーザー情報は省略される - authorityは
@
がない場合はポート番号は省略される - authorityは
@
がない場合はホストは省略されない
authority = [ userinfo "@" ] host [ ":" port ]
userinfo
- userinfoはユーザー名とパスワードから構成される
- userinfoは
:
で区切られたユーザー名とパスワードの順に記述される - userinfoは
:
がない場合はユーザー名のみ - userinfoは
:
がない場合はパスワードは省略される
userinfo = *( unreserved / pct-encoded / sub-delims / ":" )
host
- hostはホスト名またはIPアドレスから構成される
- hostはホスト名またはIPアドレスのいずれかのみ
- hostは
[]
で囲まれたIPアドレスの場合は[]
を含む
host = IP-literal / IPv4address / reg-name
port
- portはポート番号から構成される
- portは10進数のみ
- portは0から65535までの範囲のみ
port = *DIGIT
path
- pathは階層構造のパスから構成される
- pathは
/
で区切られた階層構造のパスの順に記述される - pathは
/
がない場合は階層構造のパスは省略される
query
- queryはクエリ文字列から構成される
- queryは
?
で始まる - queryは
?
の後にクエリ文字列が続く場合と続かない場合がある - queryは
?
の後にクエリ文字列が続かない場合はfragmentから始まる
query = *( pchar / "/" / "?" )
fragment
- fragmentはフラグメント識別子から構成される
- fragmentは
#
で始まる - fragmentは
#
の後にフラグメント識別子が続く場合と続かない場合がある
fragment = *( pchar / "/" / "?" )
URL
URLの構成
- URLはscheme, authority, path, query, fragmentの5つのコンポーネントから構成される
- scheme, authority, pathは必須
- query, fragmentはオプション
URN
URNの構成
- URNはURNスキーム、URN名から構成される
- URNスキームはURNの種類を表す
- URNスキームは大文字小文字を区別しない
- URNスキームは英数字と
+
,-
,.
のみを使用する - URNスキームは
:
で終わる - URNスキームは
:
の後にURN名が続く
URN = urn ":" NID ":" NSS
NID
- NIDはURNの種類を表す
- NIDは大文字小文字を区別しない
- NIDは英数字と
+
,-
,.
のみを使用する - NIDは
:
で終わる - NIDは
:
の後にURN名が続く
NID = 1*ALPHA
NSS
- NSSはURN名から構成される
- NSSは大文字小文字を区別する
- NSSは英数字と
+
,-
,.
,:
,_
,~
のみを使用する - NSSは
:
で終わる - NSSは
:
の後にURN名が続く
NSS = 1*( unreserved / pct-encoded / sub-delims / ":" )