URIの仕様 (Webを支える技術:4章メモ)
【4.1】
【4.2】URIの構文
ホスト名 = ドメイン名かIPアドレス名。必ず一意になっている。
あるリソースのURIが世界中のほかのリソースのURIと絶対に重複しないようになっている。
複雑な例
ユーザー情報:このリソースにアクセスする際に利用するユーザ名とパスワード
❓疑問:ユーザー名はよく見るけど、パスワードをURIに入れるのはセキュリティに問題がありそうなので、実際にはここにパスワードを書くことはほぼないのでは?
クエリパラメーター
名前=値形式/複数あるときは&で連結
たとえば検索サービスに検索キーワードを渡すときなど、クライアントから動的にURIを生成するときに利用します
例えば、画像検索で青い花の画像を検索したいので、検索オプションで色は青、対象を花を選んだ検索したとする。そうすると、変数colorにblue、変数objectにflowerが入る。検索したときのURIのクエリはcolor=blue&object=flowerとなる。
【4.3】相対URI/絶対URI/ベースURI
URIのパスはLinuxと同じ階層構造
Linuxに絶対パスと相対パスがあるように、URIにも絶対パスと相対パスがある
相対URIだと起点となるURIが分からないのでクライアント側が分からない→絶対URIに変換する必要がある→ベースURIが必要
この方法はクライアント側がベースURI(となるリソースのURI)を保存していないと、= もとのURIが分からないとできない方法
これの解決のために、HTMLやXMLの中にベースURIを書く。
【4.4】
URIに使える文字
ASCII文字
日本語は使えない。ASCII以外の文字は%エンコーディングという方式を使う
実際に検索してみた
wikipediaを「あ」で検索したときのURI
https://gyazo.com/c93d5e5b53a43ff7d9bfae8fd49cbf96
これをどこでもいいからコピペすると%エンコーディングに変わっている
https://gyazo.com/439301bca557a55b2eb4b6d36421a8a3
これをクリックして接続すると日本語に戻る
この%エンコーディングの方式には種類がある。UTF-8がほとんど:UTF-8とは 【4.6】
URIスキームはhttp以外にもたくさんある
URI(Uniform Resource Identifier)およびURL(Uniform Resource Locator)はネット上に存在する様々な対象(データ、サービス、機器など)の識別名や所在を書き表すための統一された書式で、スキームはその先頭部分の短いアルファベットの並びである。
資源の種類やアクセス方法などを表しており、HTTPでWeb上の資源にアクセスするための「http:」、SSL/TLSで暗号化されたWebアクセスを意味する「https:」、FTPでファイルを送受信するための「ftp:」、コンピュータ内のファイルシステムにアクセスするための「file:」、電子メールの送信先を指定する「mailto:」などがよく知られる。
URIスキームを新たに登録しなければならないのは、従来にないプロトコルを発明したときくらい
【4.7】URiの実際の実装で気をつけること
クライアントで相対URIを解決するには面倒な処理が必要になるので、WebサービスやWebAPIを実装する場合はなるべく絶対URIを使ったほうがクライアントにとって親切
✦ URIとURLの違いは?→コラムに詳細
URIをURLと読み替えても問題ない
URLには、ドメインを更新しなかったり、サーバが何らかの障害で変更になったりするとアクセスできなくなるという問題があります(注a)。この問題に対応するため、ドメイン名とは独立してリソースに恒久的なIDを振るための仕様が検討されました。その成果がURNです。
URNを用いると、リソースにドメイン名とは独立した名前が付けられます。たとえば書籍はISBNという世界的に統一したIDを持っています。ISBNを利用したURNの例を次に示します。
urn:isbn:9784774142043
このようにURNはドメイン名には依存しません。
URIはURLとURNの2つのID体系を合わせた総称
ただし、URNはWeb上で普及しているとは言えない
普及してない理由↓
https://gyazo.com/5ce179e9c2e7274368e6b94fbd7a6dcb