丁鹿學(xué)堂:前端工程師http面試總結(jié),請(qǐng)求方法和狀態(tài)碼
http請(qǐng)求方法總結(jié)
get: 從服務(wù)器獲取資源
post:在服務(wù)器創(chuàng)建資源
put:在服務(wù)器修改資源
delete:在服務(wù)器刪除資源
注意:
post和put的最大區(qū)別,在于put具有冪等性。比如你調(diào)用post10次,他會(huì)創(chuàng)造10個(gè)資源,在服務(wù)器產(chǎn)生的影響是不一樣的。
而put,調(diào)用10次,只要請(qǐng)求是一樣的,那么他在服務(wù)器產(chǎn)生的影響是一樣的。
http狀態(tài)碼詳解
1xx:提供信息,101 協(xié)議切換,
2xx:成功
200:ok,get請(qǐng)求成功返回
201Lcreated已創(chuàng)建,通常post請(qǐng)求會(huì)返回
202 請(qǐng)求已經(jīng)收到,比如創(chuàng)建訂單,在服務(wù)端的開銷比較大,一些異步請(qǐng)求會(huì)先返回202表示已經(jīng)接收到請(qǐng)求。
203 非權(quán)威內(nèi)容,表示原始服務(wù)器的內(nèi)容在中間被修改過(guò),比如中間有代替服務(wù)器
204:沒(méi)有內(nèi)容返回,常見的put操作,內(nèi)容修改成功但是沒(méi)有內(nèi)容返回。
205:重置內(nèi)容,比如用戶在輸入一個(gè)大的表單,服務(wù)器拿走了,但是希望前端重置一下,方便用戶輸入新的內(nèi)容
206:服務(wù)端下發(fā)部分內(nèi)容
3xx:重定向
301 永久轉(zhuǎn)移,比如一些老網(wǎng)址的內(nèi)容永久轉(zhuǎn)移到新的網(wǎng)址上
303: see other 可以使用get方法在另一個(gè)url找到資源
304:沒(méi)有修改,緩存。如果請(qǐng)求的內(nèi)容沒(méi)有變,web服務(wù)會(huì)返回一個(gè)304給瀏覽器,同時(shí)不會(huì)把資源真的返回,瀏覽器用緩存去展示。
305:需要代理。
307:臨時(shí)重定向
308:永久重定向
面試題:301和308都是永久重定向,他們的差別?
共同點(diǎn):資源被永久移動(dòng)到新的地址
差異:客戶端收到308請(qǐng)求后,之前是什么方法,那么之后也會(huì)沿用這個(gè)方法去請(qǐng)求新的地址。
而客戶端收到301請(qǐng)求,不管之前是什么方法,統(tǒng)一會(huì)使用get去請(qǐng)求新的地址。
4xx:客戶端錯(cuò)誤,404訪問(wèn)資源不存在
400 請(qǐng)求格式錯(cuò)誤
401:沒(méi)有授權(quán),基本會(huì)跳登錄
402:請(qǐng)先付費(fèi),比如訪問(wèn)一些付費(fèi)資源(基本沒(méi)有人使用)
403:禁止訪問(wèn)
404:沒(méi)有找到資源
405方法不被允許
406:服務(wù)端可以提供的內(nèi)容和客戶端期待的不一樣,比如編碼格式不同
5xx:服務(wù)端錯(cuò)誤
500 內(nèi)部服務(wù)器錯(cuò)誤
501:沒(méi)有實(shí)現(xiàn),比如某個(gè)接口存在,但是后端沒(méi)有實(shí)現(xiàn)
502:網(wǎng)關(guān)錯(cuò)誤
503:服務(wù)不可用
504:網(wǎng)關(guān)超時(shí)
505:版本不支持。比如http的協(xié)議版本
注意:規(guī)范如此,但是多數(shù)服務(wù)端開發(fā)已經(jīng)不遵循狀態(tài)碼,成功基本都是返回200,語(yǔ)義用返回的字段去定義。而錯(cuò)誤基本都會(huì)返回400