Http 基礎(chǔ)

[toc]

Http 基礎(chǔ)

Http的原理和工作機制

Http 定義 Http到底是什么

直觀印象:

  1. 瀏覽器輸入地址,打開網(wǎng)頁
  2. Android發(fā)送請求秦驯,返回對應(yīng)的內(nèi)容

HyperText Transfer Protocol 超文本傳輸協(xié)議

  • 超文本:在電腦顯示的犁罩,含有可以指向其他文本的文本

    其實就是Html庄拇,http最初就是為了傳輸Html文檔而誕生的呈础。

    HyperText 毡惜,所謂的超其實是可擴展的意思瓤狐。

HTTP 的工作方式

瀏覽器 :

用戶輸入地址后回?或點擊鏈接 -> 瀏覽器拼裝 HTTP 報文并發(fā)送請求給服務(wù)器 -> 服 務(wù)器處理請求后發(fā)送響應(yīng)報文給瀏覽器 -> 瀏覽器解析響應(yīng)報文并使用渲染引擎顯示 到界面

手機 App :

用戶點擊或界面自動觸發(fā)聯(lián)網(wǎng)需求 -> Android 代碼調(diào)用拼裝 HTTP 報文并發(fā)送請求 到服務(wù)器 -> 服務(wù)器處理請求后發(fā)送響應(yīng)報文給手機 -> Android 代碼處理響應(yīng)報文并 作出相應(yīng)處理(如儲存數(shù)據(jù)瞬铸、加工數(shù)據(jù)、顯示數(shù)據(jù)到界面)

URL -> HTTP報文

URL 格式

三部分:協(xié)議類型础锐、服務(wù)器地址(和端口號)嗓节、路徑(Path) 協(xié)議類型://服務(wù)器地址[:端口號]/路徑

http://hencoder.com/users?gender=male

在瀏覽器輸入Url會被轉(zhuǎn)化成請求報文。

請求報文 Request

image-20200720013214148.png

Host不是給服務(wù)器看的皆警,是給主機的拦宣,所以不屬于請求行。

Http 有信姓,0.9 1.1 2.0版本恢着,0.9已經(jīng)廢棄,1.1正被大量使用财破,正在向2.0遷移

Body掰派,提供給服務(wù)器看的具體內(nèi)容(一般般業(yè)務(wù)相關(guān)),不是必須的左痢。

Body是提供給服務(wù)器靡羡,讓服務(wù)器去處理的內(nèi)容系洛,而用來定位請求的都在Head中。

響應(yīng)報文

image-20200720013926845.png

和請求報文(Request)基本一樣略步,

除了第一行描扯,叫狀態(tài)行。返回了一個狀態(tài)碼和狀態(tài)信息趟薄,是這次請求的簡單描述绽诚。

Http的請求方法和狀態(tài)碼

請求方法

重復(fù)執(zhí)行多次結(jié)果還是一樣,就是有冪等性

Get

  • 獲取資源杭煎,沒有Body,具有冪等性
  • 是第一個版本(0.9)就存在的方法恩够,在瀏覽器輸入地址調(diào)用的就是Get方法,它不對服務(wù)器的數(shù)據(jù)進行操作羡铲。

Body是操作服務(wù)器數(shù)據(jù)用的蜂桶,里面的的內(nèi)容是給服務(wù)器讀的,作為只獲取數(shù)據(jù)不操作數(shù)據(jù)的Get請求自然不需要Body也切,

如果想傳遞參數(shù)扑媚,就要拼在Requst 請求行等path上 比如 /user/1 傳遞參數(shù)1

Get /users/1 Http/1.1
Host api.github.com

在Get 增加Body標簽,Retrofit甚至會報錯雷恃。

Post

  • 增加和修改資源疆股,有且一定有Body,不具有冪等性

既然要新增/修改資源倒槐,不增加參數(shù)(Body)服務(wù)器自然無法修改

Put

  • 修改(只修改)旬痹,有Body,具有冪等性

既然Post的和Put的區(qū)別

相似 區(qū)別
都可以修改數(shù)據(jù)都符合標準 Post不具有冪等性导犹,執(zhí)行多次返回不同的結(jié)果唱凯,因為它可以增加資源。Put具有冪等性谎痢,執(zhí)行多次返回相同的結(jié)果磕昼,例如多次修改性別為女,結(jié)果用戶的性別還是女节猿。

Delete

  • 刪除資源票从,沒有Body,有冪等性(刪除用戶1滨嘱,重復(fù)執(zhí)行無反應(yīng)峰鄙,因為已經(jīng)刪除了,從結(jié)果來看是一樣的)
Delete /users/1 Http/1.1
Host api.github.com  

從path就足以定位用戶刪除了太雨,無需Body

Head

和Get請求完全相同吟榴,返回響應(yīng)沒有Body,其他請求方法的響應(yīng)都是有Body的囊扳》苑可以快速得到資源信息兜看。

狀態(tài)碼 (日常中最重要的2打頭 成功,4打頭客戶端錯誤狭瞎。)

  • 作用: 對結(jié)果作出類型化的描述(如獲得成功细移,內(nèi)容未找到)

  • 1xx:臨時性消息。如:

    • 100 (繼續(xù)發(fā)送)熊锭,如果你發(fā)送的文件太大弧轧,想分段發(fā)送。

      Header傳Excpet: 100-continue碗殷,

      服務(wù)器響應(yīng)HTTP/1.1 100代表允許你繼續(xù)發(fā)送精绎。

      發(fā)送成功后返回HTTP/1.1 200或者201

    • 101(正在切換協(xié)議 比如http1.1和http2.0的請求不兼容,

    • 一般會加一個Upgrade: h2c的header試著請求亿扁,詢問服務(wù)器是否支持Http2.0捺典,

      服務(wù)器響應(yīng)HTTP/1.1 101鸟廓,則代表服務(wù)器支持http2.0

      服務(wù)器響應(yīng)HTTP/1.1 200从祝,代表不識別Http2.0的請求)

  • 2xx:成功。最典型的是 200(OK)引谜、201(創(chuàng)建成功)牍陌。

  • 3xx:重定向。如 301(永久移動)员咽、302(暫時移動)毒涧、304(內(nèi)容未改變)。 對于瀏覽器來說表現(xiàn)一樣贝室,

但是301可以通知搜索引擎契讲,你的網(wǎng)站已遷移,搜索引擎會將權(quán)重轉(zhuǎn)移到新域名滑频。
  • 4xx:客戶端錯誤捡偏。如 400(客戶端請求錯誤)、401(認證失敗)峡迷、403(被禁 止)银伟、404(找不到內(nèi)容)。

  • 5xx:服務(wù)器錯誤绘搞。如 500(服務(wù)器內(nèi)部錯誤)

日常中最重要的2打頭 成功彤避,4打頭客戶端錯誤。

HTTP的Header和Body

Body是報文的核心夯辖,但是所有的Body都是配合Header使用的琉预,提交用戶信息有多個方法,都是由Header定義的蒿褂。

  • Header是Http消息的元數(shù)據(jù)(metadata) 即數(shù)據(jù)的數(shù)據(jù)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末圆米,一起剝皮案震驚了整個濱河市尖阔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌榨咐,老刑警劉巖介却,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異块茁,居然都是意外死亡齿坷,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進店門数焊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來永淌,“玉大人,你說我怎么就攤上這事佩耳∷熘” “怎么了?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵干厚,是天一觀的道長李滴。 經(jīng)常有香客問我,道長蛮瞄,這世上最難降的妖魔是什么所坯? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮挂捅,結(jié)果婚禮上芹助,老公的妹妹穿的比我還像新娘。我一直安慰自己闲先,他們只是感情好状土,可當我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著伺糠,像睡著了一般蒙谓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上退盯,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天彼乌,我揣著相機與錄音,去河邊找鬼渊迁。 笑死慰照,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的琉朽。 我是一名探鬼主播毒租,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼箱叁!你這毒婦竟也來了墅垮?” 一聲冷哼從身側(cè)響起惕医,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎算色,沒想到半個月后抬伺,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡灾梦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年峡钓,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片若河。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡能岩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出萧福,到底是詐尸還是另有隱情拉鹃,我是刑警寧澤,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布鲫忍,位于F島的核電站膏燕,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏饲窿。R本人自食惡果不足惜煌寇,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一焕蹄、第九天 我趴在偏房一處隱蔽的房頂上張望逾雄。 院中可真熱鬧,春花似錦腻脏、人聲如沸鸦泳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽做鹰。三九已至,卻和暖如春鼎姐,著一層夾襖步出監(jiān)牢的瞬間钾麸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工炕桨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留饭尝,地道東北人。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓献宫,卻偏偏與公主長得像钥平,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子姊途,可洞房花燭夜當晚...
    茶點故事閱讀 45,630評論 2 359