(二)關(guān)于url

關(guān)于URL

說起URL齿尽,大家第一反應(yīng)可能是這不就是一個(gè)地址嗎紫新,還能有什么門道扣甲?

URL是Uniform Resource Locator的縮寫,稱為統(tǒng)一資源定位符奏甫。URL正是使用web瀏覽器訪問web頁面時(shí)需要輸入的網(wǎng)頁地址。URL是一種強(qiáng)有力的工具凌受。但URL并不完美阵子。它表示的是實(shí)際的地址,而不是準(zhǔn)確的名字胜蛉。這種方案的缺點(diǎn)在于如果資源被移走了挠进,URL也就不再有效了。那么它就無法對對象進(jìn)行定位了 誊册。

URL的構(gòu)成

一個(gè)標(biāo)準(zhǔn)的URL語法組成是下面這樣的:

scheme://login:password@address:port/path_to_resource?query_string#fragment

簡化下上面的組成领突,就可以把URL分成下面四部分:

傳輸協(xié)議 + 域名或IP地址 + [端口(端口為80時(shí)可省略)] + 資源路徑 + 查詢字符串

如果要指定訪問端口時(shí)需要用“:”來隔開,例如(http://www.baidu.com:80/index.php)

1案怯、傳輸協(xié)議

協(xié)議名稱是由一串不區(qū)分大小寫的字母組成君旦,以 : 作為結(jié)束符。協(xié)議所表示的是獲取該資源需要使用的協(xié)議嘲碱。如HTTP金砍、HTTPS等。常見的協(xié)議有:

http

http是一種超文本傳輸協(xié)議悍汛,除了沒有用戶名和密碼之外捞魁,與通用的URL格式相符。如果省略了端口离咐,就默認(rèn)為80谱俭。

基本格式:http://<host>:<port>/<path>?<query>#<frag>

示例:http://www.baidu.com/index.htmlhttp://www.baidu.com:80/index.html

https

https與http是一對,唯一的區(qū)別在于https在http的基礎(chǔ)上加上了SSL宵蛀, SSL為http連接提供了端到端的加密機(jī)制昆著。其語法與http的語法相同,默認(rèn)端口為443术陶。

基本格式:https://<host>:<port>/<path>?<query>#<frag>

示例:https://kyfw.12306.cn/otn/leftTicket/init

mailto

mailto URL指向的是E-mail地址凑懂,由于E-mail的行為與其他方案都有所不同(它并不指向任何可以直接訪問的對象),所以mailto URL的格式與標(biāo)準(zhǔn)URL的格式也有所不同梧宫。

示例:mailto:alany@gmail.com

ftp

ftp協(xié)議是文件傳輸協(xié)議接谨,通過該協(xié)議的URL可以從FTP服務(wù)器上下載或向其上傳文件,并獲取FTP服務(wù)器上的目錄結(jié)構(gòu)內(nèi)容的列表塘匣。

基本格式:ftp://<user>:<password>@<host>:<port>/<path>;<params>

示例:ftp://root:test2017@tsinghua.edu:21/pub/gnu/

鑒于主題和篇幅關(guān)系脓豪,其他的協(xié)議就不一一介紹了,有興趣可以額外搜索了解忌卤。

2扫夜、主機(jī)和端口

要想在互聯(lián)網(wǎng)上找到資源,應(yīng)用程序要知道是哪臺(tái)機(jī)器裝載了資源,以及在那臺(tái)機(jī)器的什么地方可以找到能對目標(biāo)資源進(jìn)行訪問的服務(wù)器笤闯,URL的主機(jī)和端口組件提供了這兩組信息堕阔。

主機(jī)標(biāo)識了互聯(lián)網(wǎng)上能夠訪問資源的宿主機(jī)器】盼叮可以用上述域名(www.baidu.com)或者IP地址(14.215.177.38)來表示主機(jī)名超陆。

端口組件標(biāo)識了服務(wù)器正在監(jiān)聽的網(wǎng)絡(luò)端口,對下層使用了TCP協(xié)議的HTTP來說脱衙,默認(rèn)端口號就是80侥猬。

3例驹、資源路徑

URL的資源路徑說明了需要訪問的資源位于服務(wù)器的什么地方捐韩,路徑通常就像一個(gè)分級的文件系統(tǒng)路徑。

示例:https://github.com/AlanYangs/Log4Reports/blob/master/pom.xml

這個(gè)URL中的路徑為/AlanYangs/Log4Reports/blob/master/pom.xml鹃锈,很像UNIX文件系統(tǒng)中的文件系統(tǒng)路徑荤胁。路徑是服務(wù)器定位資源時(shí)所需的信息,可以用字符“/”將HTTP URL的路徑組件劃分成一些路徑段(path segment)屎债。

4仅政、查詢字符串

很多資源,比如數(shù)據(jù)庫服務(wù)盆驹,都是可以通過査詢來縮小所請求資源類型范圍的圆丹。假設(shè)數(shù)據(jù)庫中維護(hù)著一個(gè)未售貨物的清單,并可以對淸單進(jìn)行査詢躯喇,以判斷產(chǎn)品是否有貨辫封,那就可以用下列URL來査詢Web數(shù)據(jù)庫網(wǎng)關(guān),看看id為12731廉丽、顏色為blue倦微、尺寸為large的條目是否有貨:

http://www.test.com/query?id=12731&color=blue&size=large

分析下上面的URL,發(fā)現(xiàn)問號(?)右邊的內(nèi)容是前面沒有出現(xiàn)的正压,這部分可以稱為查詢(query)組件欣福,通常是以鍵值對的形式出現(xiàn),多個(gè)鍵值對之間用&連接焦履。此外拓劝,對于查詢字符串除了有些不合規(guī)則的字符(比如空格等)還需要轉(zhuǎn)碼處理。

HTTP的請求的方式

這一部分從內(nèi)容上看貌似應(yīng)該放在上一篇《關(guān)于HTTP》中說明的嘉裤,放在URL中來說明是為了更好的理解GET和POST方式的區(qū)別郑临。HTTP的請求的方式有多種,打開一個(gè)HTTP接口工具(PostMan)价脾,可以查看下請求的類型:

postman

請求類型有這么多牧抵,我們通常只需要關(guān)注GET和POST就好,下面具體介紹下GET和POST方法的URL樣式及對比。

1犀变、URL樣式

GET - 通常是從指定的服務(wù)器中獲取數(shù)據(jù)妹孙,查詢字符串(鍵值對)被附加在URL地址后面一起發(fā)送到服務(wù)器,如下面這樣的:http://localhost:8090/api/query?id=3获枝,在postman中的請求示例如下:

POST - 通常是提交數(shù)據(jù)給指定的服務(wù)器處理蠢正,當(dāng)然也可以從服務(wù)器獲取數(shù)據(jù)。使用POST方法時(shí)省店,查詢字符串或發(fā)送的數(shù)據(jù)在POST信息中單獨(dú)存在嚣崭,和請求URL一起發(fā)送到服務(wù)器,而不是像GET方法一樣直接放在URL中懦傍。在postman中的請求示例如下:

2雹舀、GET和POST的區(qū)別

從上面的例子我們可以看到,GET請求消息體(body)為空粗俱,POST請求帶有消息體(請區(qū)分請求body和響應(yīng)body)说榆。

GET提交的數(shù)據(jù)會(huì)放在URL之后,以?分割URL和傳輸數(shù)據(jù)寸认,參數(shù)之間以&相連签财,如query?name=test1&id=123456。-

POST方法是把提交的數(shù)據(jù)放在HTTP包的請求body中偏塞。

GET提交的數(shù)據(jù)大小有限制(因?yàn)闉g覽器對URL的長度有限制)唱蒸,而POST方法提交的數(shù)據(jù)沒有限制。

GET方式提交數(shù)據(jù)灸叼,會(huì)帶來安全問題神汹,比如一個(gè)登錄頁面,通過GET方式提交數(shù)據(jù)時(shí)怜姿,用戶名和密碼將出現(xiàn)在URL上慎冤,如果頁面可以被緩存或者其他人可以訪問這臺(tái)機(jī)器,就可以從歷史記錄獲得該用戶的賬號和密碼沧卢。

關(guān)于工具

“工欲善其事蚁堤,必先利其器”,目前比較流行的HTTP接口工具有postman(可以單獨(dú)安裝也可以作為Chrome的插件安裝)但狭、HttpRequest(火狐上的插件)披诗,或者自己寫個(gè)html的form表單提交也是可以的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末立磁,一起剝皮案震驚了整個(gè)濱河市呈队,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌唱歧,老刑警劉巖宪摧,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件粒竖,死亡現(xiàn)場離奇詭異,居然都是意外死亡几于,警方通過查閱死者的電腦和手機(jī)蕊苗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來沿彭,“玉大人朽砰,你說我怎么就攤上這事『砹酰” “怎么了瞧柔?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長睦裳。 經(jīng)常有香客問我造锅,道長,這世上最難降的妖魔是什么推沸? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任备绽,我火速辦了婚禮券坞,結(jié)果婚禮上鬓催,老公的妹妹穿的比我還像新娘。我一直安慰自己恨锚,他們只是感情好宇驾,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著猴伶,像睡著了一般课舍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上他挎,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天筝尾,我揣著相機(jī)與錄音,去河邊找鬼办桨。 笑死筹淫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的呢撞。 我是一名探鬼主播损姜,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼殊霞!你這毒婦竟也來了摧阅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤绷蹲,失蹤者是張志新(化名)和其女友劉穎棒卷,沒想到半個(gè)月后顾孽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡比规,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年岩齿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片苞俘。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡盹沈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出吃谣,到底是詐尸還是另有隱情乞封,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布岗憋,位于F島的核電站肃晚,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏仔戈。R本人自食惡果不足惜关串,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望监徘。 院中可真熱鬧晋修,春花似錦、人聲如沸凰盔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽户敬。三九已至落剪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間尿庐,已是汗流浹背忠怖。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留抄瑟,地道東北人凡泣。 一個(gè)月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像锐借,于是被迫代替她去往敵國和親问麸。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容