成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

一個(gè)HTTP打趴80%面試者

econi / 1624人閱讀

摘要:閱讀原文一個(gè)打趴面試者面試一年多,每當(dāng)我問(wèn)起面試者對(duì)的了解時(shí),個(gè)個(gè)回答令我瞠目結(jié)舌,這些開發(fā)者都有年的經(jīng)驗(yàn)。向指定資源提交數(shù)據(jù)進(jìn)行處理請(qǐng)求例如提交表單或者上傳文件。

閱讀原文:一個(gè)HTTP打趴80%面試者

面試一年多,每當(dāng)我問(wèn)起面試者對(duì)HTTP的了解時(shí),個(gè)個(gè)回答令我瞠目結(jié)舌,這些開發(fā)者都有3-5年的經(jīng)驗(yàn)。請(qǐng)不要讓我叫你野生程序員,是時(shí)候了解HTTP了,讓我們當(dāng)個(gè)正規(guī)軍。

起因

面試官:請(qǐng)問(wèn)你了解HTTP協(xié)議嗎?

前端開發(fā):這不是應(yīng)該后端清楚的嗎?

后端開發(fā):這不是前端知道的嗎?

面試官:……

我們先一本正經(jīng)的來(lái)了解下HTTP(不包含傳輸層TCP),然后總結(jié)其中的精華回復(fù)面試官。

HTTP協(xié)議簡(jiǎn)介

HTTP(超文本傳輸協(xié)議)是應(yīng)用層上的一種客戶端/服務(wù)端模型的通信協(xié)議,它由請(qǐng)求和響應(yīng)構(gòu)成,且是無(wú)狀態(tài)的。(暫不介紹HTTP2)

協(xié)議

協(xié)議規(guī)定了通信雙方必須遵循的數(shù)據(jù)傳輸格式,這樣通信雙方按照約定的格式才能準(zhǔn)確的通信。

無(wú)狀態(tài)

無(wú)狀態(tài)是指兩次連接通信之間是沒(méi)有任何關(guān)系的,每次都是一個(gè)新的連接,服務(wù)端不會(huì)記錄前后的請(qǐng)求信息。

客戶端/服務(wù)端模型

五層網(wǎng)絡(luò)模型

URL構(gòu)成

用了這么久,你注意過(guò)嗎?

協(xié)議內(nèi)容 請(qǐng)求(Request)

客戶端發(fā)送一個(gè)HTTP請(qǐng)求到服務(wù)端的格式:

請(qǐng)求行

請(qǐng)求頭

請(qǐng)求體

響應(yīng)(Response)

服務(wù)端響應(yīng)客戶端格式:

狀態(tài)行

響應(yīng)頭

響應(yīng)體

狀態(tài)碼

HTTP狀態(tài)碼由三個(gè)十進(jìn)制數(shù)字組成,第一個(gè)十進(jìn)制數(shù)字定義了狀態(tài)碼的類型,后兩個(gè)數(shù)字沒(méi)有分類的作用。HTTP狀態(tài)碼共分為5種類型:

分類 分類描述
1** 信息,服務(wù)器收到請(qǐng)求,需要請(qǐng)求者繼續(xù)執(zhí)行操作
2** 成功,操作被成功接收并處理
3** 重定向,需要進(jìn)一步的操作以完成請(qǐng)求
4** 客戶端錯(cuò)誤,請(qǐng)求包含語(yǔ)法錯(cuò)誤或無(wú)法完成請(qǐng)求
5** 服務(wù)器錯(cuò)誤,服務(wù)器在處理請(qǐng)求的過(guò)程中發(fā)生了錯(cuò)誤

更詳細(xì)的狀態(tài)碼可查看 HTTP狀態(tài)碼

但一般我們只需要知道幾個(gè)常見的就行,比如 200,400,401,403,404,500,502.

請(qǐng)求方法

截止到HTTP1.1共有下面幾種方法:

方法 描述
GET GET請(qǐng)求會(huì)顯示請(qǐng)求指定的資源。一般來(lái)說(shuō)GET方法應(yīng)該只用于數(shù)據(jù)的讀取,而不應(yīng)當(dāng)用于會(huì)產(chǎn)生副作用的非冪等的操作中。它期望的應(yīng)該是而且應(yīng)該是安全的和冪等的。這里的安全指的是,請(qǐng)求不會(huì)影響到資源的狀態(tài)。
POST 向指定資源提交數(shù)據(jù)進(jìn)行處理請(qǐng)求(例如提交表單或者上傳文件)。數(shù)據(jù)被包含在請(qǐng)求體中。POST請(qǐng)求可能會(huì)導(dǎo)致新的資源的建立和/或已有資源的修改。
PUT PUT請(qǐng)求會(huì)身向指定資源位置上傳其最新內(nèi)容,PUT方法是冪等的方法。通過(guò)該方法客戶端可以將指定資源的最新數(shù)據(jù)傳送給服務(wù)器取代指定的資源的內(nèi)容。
PATCH PATCH方法出現(xiàn)的較晚,它在2010年的RFC 5789標(biāo)準(zhǔn)中被定義。PATCH請(qǐng)求與PUT請(qǐng)求類似,同樣用于資源的更新。二者有以下兩點(diǎn)不同:1.PATCH一般用于資源的部分更新,而PUT一般用于資源的整體更新。2.當(dāng)資源不存在時(shí),PATCH會(huì)創(chuàng)建一個(gè)新的資源,而PUT只會(huì)對(duì)已在資源進(jìn)行更新。
DELETE DELETE請(qǐng)求用于請(qǐng)求服務(wù)器刪除所請(qǐng)求URI(統(tǒng)一資源標(biāo)識(shí)符,Uniform Resource Identifier)所標(biāo)識(shí)的資源。DELETE請(qǐng)求后指定資源會(huì)被刪除,DELETE方法也是冪等的。
OPTIONS 允許客戶端查看服務(wù)器的性能。
CONNECT HTTP/1.1協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器。
HEAD 類似于get請(qǐng)求,只不過(guò)返回的響應(yīng)中沒(méi)有具體的內(nèi)容,用于獲取報(bào)頭
TRACE 回顯服務(wù)器收到的請(qǐng)求,主要用于測(cè)試或診斷。
請(qǐng)求和響應(yīng)常見通用頭
名稱 作用
Content-Type 請(qǐng)求體/響應(yīng)體的類型,如:text/plain、application/json
Accept 說(shuō)明接收的類型,可以多個(gè)值,用,(半角逗號(hào))分開
Content-Length 請(qǐng)求體/響應(yīng)體的長(zhǎng)度,單位字節(jié)
Content-Encoding 請(qǐng)求體/響應(yīng)體的編碼格式,如gzip,deflate
Accept-Encoding 告知對(duì)方我方接受的Content-Encoding
ETag 給當(dāng)前資源的標(biāo)識(shí),和Last-Modified、If-None-Match、If-Modified-Since配合,用于緩存控制
Cache-Control 取值為一般為no-cachemax-age=XX,XX為個(gè)整數(shù),表示該資源緩存有效期(秒)
注意

Content-Type,內(nèi)容類型,一般是指網(wǎng)頁(yè)中存在的Content-Type,用于定義網(wǎng)絡(luò)文件的類型和網(wǎng)頁(yè)的編碼,決定瀏覽器將以什么形式、什么編碼讀取這個(gè)文件。

常見的媒體格式類型如下:

Content-Type(Mime-Type) 描述
text/html HTML格式
text/plain 純文本格式
text/xml XML格式
image/gif gif圖片格式
image/jpeg jpg圖片格式
image/png png圖片格式

以application開頭的媒體格式類型:

Content-Type(Mime-Type) 描述
application/xml XML數(shù)據(jù)格式
application/json JSON數(shù)據(jù)格式
application/pdf pdf格式
application/msword Word文檔格式
application/octet-stream 二進(jìn)制流數(shù)據(jù)(如常見的文件下載)
application/x-www-form-urlencoded form表單數(shù)據(jù)被編碼為key/value格式發(fā)送到服務(wù)器(表單默認(rèn)的提交數(shù)據(jù)的格式)
multipart/form-data 需要在表單中進(jìn)行文件上傳時(shí),就需要使用該格式
常見請(qǐng)求頭
名稱 作用
Authorization 用于設(shè)置身份認(rèn)證信息
User-Agent 用戶標(biāo)識(shí),如:OS和瀏覽器的類型和版本
If-Modified-Since 值為上一次服務(wù)器返回的 Last-Modified 值,用于確認(rèn)某個(gè)資源是否被更改過(guò),沒(méi)有更改過(guò)(304)就從緩存中讀取
If-None-Match 值為上一次服務(wù)器返回的 ETag 值,一般會(huì)和If-Modified-Since一起出現(xiàn)
Cookie 已有的Cookie
Referer 表示請(qǐng)求引用自哪個(gè)地址,比如你從頁(yè)面A跳轉(zhuǎn)到頁(yè)面B時(shí),值為頁(yè)面A的地址
Host 請(qǐng)求的主機(jī)和端口號(hào)
常見響應(yīng)頭
名稱 作用
Date 服務(wù)器的日期
Last-Modified 該資源最后被修改時(shí)間
Transfer-Encoding 取值為一般為chunked,出現(xiàn)在Content-Length不能確定的情況下,表示服務(wù)器不知道響應(yīng)版體的數(shù)據(jù)大小,一般同時(shí)還會(huì)出現(xiàn)Content-Encoding響應(yīng)頭
Set-Cookie 設(shè)置Cookie
Location 重定向到另一個(gè)URL,如輸入瀏覽器就輸入baidu.com回車,會(huì)自動(dòng)跳到 https://www.baidu.com ,就是通過(guò)這個(gè)響應(yīng)頭控制的
Server 后臺(tái)服務(wù)器
總結(jié)

清楚的知道這些內(nèi)容,不僅僅是為了應(yīng)對(duì)面試官,而是能實(shí)實(shí)在在的提高自己的效率,這一點(diǎn)在前后端聯(lián)調(diào)接口最明顯,當(dāng)你在應(yīng)用中去請(qǐng)求其他接口或轉(zhuǎn)發(fā)請(qǐng)求時(shí)這些也是要知道的。不然出現(xiàn)問(wèn)題的概率會(huì)大大提高。

歡迎關(guān)注公眾號(hào)交流!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/73789.html

相關(guān)文章

  • JavaScript系列(四) - 收藏集 - 掘金

    摘要:函數(shù)式編程前端掘金引言面向?qū)ο缶幊桃恢币詠?lái)都是中的主導(dǎo)范式。函數(shù)式編程是一種強(qiáng)調(diào)減少對(duì)程序外部狀態(tài)產(chǎn)生改變的方式。 JavaScript 函數(shù)式編程 - 前端 - 掘金引言 面向?qū)ο缶幊桃恢币詠?lái)都是JavaScript中的主導(dǎo)范式。JavaScript作為一門多范式編程語(yǔ)言,然而,近幾年,函數(shù)式編程越來(lái)越多得受到開發(fā)者的青睞。函數(shù)式編程是一種強(qiáng)調(diào)減少對(duì)程序外部狀態(tài)產(chǎn)生改變的方式。因此,...

    cfanr 評(píng)論0 收藏0
  • 雜貨 - 收藏集 - 掘金

    摘要:消息隊(duì)列技術(shù)介紹后端掘金一消息隊(duì)列概述消息隊(duì)列中間件是分布式系統(tǒng)中重要的組件,主要解決應(yīng)用耦合異步消息流量削鋒等問(wèn)題。的內(nèi)存優(yōu)化后端掘金聲明本文內(nèi)容來(lái)自開發(fā)與運(yùn)維一書第八章,如轉(zhuǎn)載請(qǐng)聲明。 消息隊(duì)列技術(shù)介紹 - 后端 - 掘金一、 消息隊(duì)列概述 消息隊(duì)列中間件是分布式系統(tǒng)中重要的組件,主要解決應(yīng)用耦合、異步消息、流量削鋒等問(wèn)題。實(shí)現(xiàn)高性能、高可用、可伸縮和最終一致性架構(gòu)。是大型分布式系...

    loostudy 評(píng)論0 收藏0
  • net - 收藏集 - 掘金

    摘要:再者,現(xiàn)在互聯(lián)網(wǎng)的面試中上點(diǎn)的都會(huì)涉及一下或者的問(wèn)題個(gè)高級(jí)多線程面試題及回答后端掘金在任何面試當(dāng)中多線程和并發(fā)方面的問(wèn)題都是必不可少的一部分。假如源碼分析之掘金概念是中集合的一種實(shí)現(xiàn)。 攻破 JAVA NIO 技術(shù)壁壘 - 后端 - 掘金現(xiàn)在使用NIO的場(chǎng)景越來(lái)越多,很多網(wǎng)上的技術(shù)框架或多或少的使用NIO技術(shù),譬如Tomcat,Jetty。學(xué)習(xí)和掌握NIO技術(shù)已經(jīng)不是一個(gè)JAVA攻城獅...

    岳光 評(píng)論0 收藏0
  • 基本方法筆記 - 收藏集 - 掘金

    摘要:探討判斷橫豎屏的最佳實(shí)現(xiàn)前端掘金在移動(dòng)端,判斷橫豎屏的場(chǎng)景并不少見,比如根據(jù)橫豎屏以不同的樣式來(lái)適配,抑或是提醒用戶切換為豎屏以保持良好的用戶體驗(yàn)。 探討判斷橫豎屏的最佳實(shí)現(xiàn) - 前端 - 掘金在移動(dòng)端,判斷橫豎屏的場(chǎng)景并不少見,比如根據(jù)橫豎屏以不同的樣式來(lái)適配,抑或是提醒用戶切換為豎屏以保持良好的用戶體驗(yàn)。 判斷橫豎屏的實(shí)現(xiàn)方法多種多樣,本文就此來(lái)探討下目前有哪些實(shí)現(xiàn)方法以及其中的優(yōu)...

    maochunguang 評(píng)論0 收藏0
  • 前端--通用知識(shí) - 收藏集 - 掘金

    摘要:閉包有多重前端知識(shí)點(diǎn)大百科全書前端掘金,,技巧使你的更加專業(yè)前端掘金一個(gè)幫你提升技巧的收藏集。 Vue全家桶實(shí)現(xiàn)還原豆瓣電影wap版 - 掘金用vue全家桶仿寫豆瓣電影wap版。 最近在公司項(xiàng)目中嘗試使用vue,但奈何自己初學(xué)水平有限,上了vue沒(méi)有上vuex,開發(fā)過(guò)程特別難受。 于是玩一玩本項(xiàng)目,算是對(duì)相關(guān)技術(shù)更加熟悉了。 原計(jì)劃仿寫完所有頁(yè)面,礙于豆瓣的接口API有限,實(shí)現(xiàn)頁(yè)面也有...

    王笑朝 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

econi

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<