- 深入理解React Router:從原理到實踐
- 李楊韜
- 4字
- 2021-04-16 16:10:33
1.1 URI和URL
1.1.1 URI和URL簡介
統一資源標識符(Uniform Resource Identifier,URI),允許用戶對網絡中的資源通過特定的協議進行交互操作。RFC2396文檔對Uniform Resource Identifier各部分的定義如下。
Uniform:規定統一的語法格式,以方便處理多種不同類型的資源,而無須根據上下文環境來識別資源類型。
Resource:可標識的任何資源。資源不僅可以為單一對象,也可以為多個對象的集合體。
Identifier:表示可標識的對象,也稱為標識符。
在一般情況下,URI為由某個協議方案表示的資源的定位標識符。協議方案是指訪問資源時所使用的協議類型名稱。HTTP就是協議方案的一種,除此之外,還有FTP、file、TELNET等30種標準URI協議方案。協議方案由互聯網號碼分配局(IANA)管理頒布。URI使用字符串標識某一互聯網資源,常用的URL作為URI的子集,表示某一互聯網資源的地點。
URI的通用語法由5個組件組成:

其中,authority組件可以由以下3個組件組成:

在authority中,userinfo作為登錄信息,通常形式為指定用戶名和密碼,當從服務器獲取資源時作為身份認證憑證使用。userinfo為可選項。
服務器地址host在使用絕對路徑URI時需指定訪問的服務器地址,地址可以為被DNS解析的域名,如example.com,或者192.168.1.1的IPv4地址及用方括號括起來的IPv6地址[0:0:0:0:0:0:0:1]。
port為服務器連接的網絡端口號,作為可選項,如果不指定,則自動使用默認的端口號。
在URI語法中,scheme為協議方案名,在使用HTTPS或HTTP等協議方案名時不區分大小寫,最后一個符號為冒號“:”。協議方案名也可使用javascript:、data:指定腳本程序或數據。
path為帶層次的文件路徑,指定服務器上的文件路徑,以訪問特定的資源。
query為查詢字符串,針對指定路徑的文件資源,可使用查詢字符串傳入任意查詢參數。
fragment為片段標識符,通常標記已獲取資源的子資源,為可選項。
RFC3986文檔列舉了幾種URI示例:

在以上URI示例中,ldap://[2001:db8::7]/c=GB?objectClass?one的schema為ldap,authority為//[2001:db8::7],path為/c=GB,query為?objectClass?one;https://daisy@example.com:123的schema為https,authority為//daisy@example.com:123,其中userinfo為daisy,host為example.com,port為123。
統一資源定位器(UniformResourceLocators,URL)作為URI的一種,如同網絡的門牌,標識了一個互聯網資源的“住址”,如http://www.example.com表示通過HTTP協議從主機名為www.example.com的主機上獲取首頁資源。
URL的語法定義與URI一致:

以https://example.com:80/foo/baz?title=router為例,其中https表示加密的超文本傳輸協議,example.com為服務器的地址,80為服務器上的端口號,/foo/baz為資源路徑,?title=router為路徑的查詢,以“?”開頭,各個參數以“&”分隔,以等號“=”分開參數名稱與數據。
如無特別說明,本書以URL作為網絡資源地址的描述。
- 算法精粹:經典計算機科學問題的Java實現
- 動手玩轉Scratch3.0編程:人工智能科創教育指南
- PostgreSQL Replication(Second Edition)
- Learning Network Forensics
- Python數據可視化之Matplotlib與Pyecharts實戰
- Visual Basic程序設計實踐教程
- PySide 6/PyQt 6快速開發與實戰
- Java EE核心技術與應用
- Hadoop大數據分析技術
- C編程技巧:117個問題解決方案示例
- Web Developer's Reference Guide
- Python數據科學實踐指南
- C語言從入門到精通(微視頻精編版)
- Node.js進階之路
- 像程序員一樣使用MySQL