HTTP概念、原理、機(jī)制、數(shù)據(jù)格式

1.HTTP的簡(jiǎn)介

HTTP 的定義

一種網(wǎng)絡(luò)傳輸協(xié)議,位于TCP/IP 協(xié)議族的應(yīng)用層。

超文本傳輸協(xié)議(HTTP,HyperText Transfer Protocol),和HTML(Hypertext Markup Language),HTTP是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議。所用的www文件必須準(zhǔn)守這個(gè)標(biāo)準(zhǔn)。

超文本,既(擴(kuò)展性文本),指的是HTML中可以有鏈向別的文本的鏈接。


image.png

2.HTTP的工作方式

瀏覽器:

用戶(hù)在瀏覽器輸入地址點(diǎn)擊回車(chē)->瀏覽器拼裝HTTP報(bào)文并發(fā)送請(qǐng)求給服務(wù)器->服務(wù)器處理請(qǐng)求后發(fā)送響應(yīng)報(bào)文給瀏覽器->瀏覽器解析報(bào)文并且顯示到界面

APP:

用戶(hù)打開(kāi)APP->Android端調(diào)用請(qǐng)求拼接報(bào)文并且發(fā)送給服務(wù)器->服務(wù)器處理請(qǐng)求后響應(yīng)報(bào)文給手機(jī)->Android處理響應(yīng)報(bào)文并且處理數(shù)據(jù)展示頁(yè)面

3.URL 和 HTTP報(bào)文

URL 格式

Https://www.baidu.com

協(xié)議類(lèi)型://服務(wù)器地址[:端口號(hào)]路徑

請(qǐng)求報(bào)文格式

image.png

響應(yīng)報(bào)文格式

image.png

Request Method 請(qǐng)求方法

GET

1.用于獲取服務(wù)器資源

2.對(duì)于不對(duì)服務(wù)器資源進(jìn)行修改的請(qǐng)求

3.get請(qǐng)求沒(méi)有請(qǐng)求體

GET /users/1 HTTP/1.1
Host: www.baidu.com

POST

1.用于修改或者增加資源

2.發(fā)送給服務(wù)器的內(nèi)容放置在body中

POST /users HTTP/1.1
Host: www.baidu.com Content-Type: application/x-www-form-urlencoded
Content-Length: 13

name=rengwuxian&gender=male

PUT

1.用于修改資源

2.發(fā)送給服務(wù)器的內(nèi)容放置在body中

PUT /users/1 HTTP/1.1
Host: www.baidu.com Content-Type: application/x-www-form-urlencoded
Content-Length: 13

gender=female

Delete

1.用于刪除資源

2.不發(fā)送body

DELETE /users/1 HTTP/1.1
Host: www.baidu.com

Head

1.和GET使用方法完全相同

2.和GET唯一區(qū)別在于,返回的響應(yīng)中沒(méi)有Body

Status Code 狀態(tài)碼

狀態(tài)嗎是三位數(shù)字,用于對(duì)響應(yīng)結(jié)果做出類(lèi)型化描述

  1. 1xx:臨時(shí)性消息。如:100(繼續(xù)發(fā)送)、101(正在切換協(xié)議)
  2. 2xx:成功。如:200(響應(yīng)成功)、201(創(chuàng)建成功)
  3. 3xx:重定向。如:301(永久移動(dòng))、302(暫時(shí)移動(dòng))、304(內(nèi)容未改變)
  4. 4xx:客戶(hù)端錯(cuò)誤。如:400(客戶(hù)端請(qǐng)求錯(cuò)誤)、401(認(rèn)證失敗)、403(被禁止)、404(找不到內(nèi)容)
  5. 5xx:服務(wù)器錯(cuò)誤。如500(服務(wù)器內(nèi)部錯(cuò)誤)

Header 首部

作用:HTTP消息的metadata。

Host

目標(biāo)主機(jī)。是在目標(biāo)服務(wù)器上用于定位子服務(wù)器

Content-Type

指定Body的類(lèi)型。主要有四類(lèi):

1.text/html :請(qǐng)求Web頁(yè)面是返回響應(yīng)的類(lèi)型,Body中返回html文本

2.x-www-form-urlencoded :Web 頁(yè)面純文本表單的提交方式

3.multitype/form-data:Web頁(yè)面含有二進(jìn)制文件時(shí)的提交方式

4.application/json,image/jpeg,application/zip ……

單項(xiàng)內(nèi)容(文本或非文本都可以),用于Web api的響應(yīng)或者POST/PUT的請(qǐng)求

Content-Length

指定Body的長(zhǎng)度(字節(jié))

Trans:chunked(分塊傳輸編碼Chunked Transfer Encoding)

用于當(dāng)響應(yīng)發(fā)起時(shí),內(nèi)容長(zhǎng)度還沒(méi)能確定的情況下。和Content-Length不同時(shí)使用。用途是盡早給出響應(yīng),減少用戶(hù)等待。

格式:

HTTP/1.1 200 OK
Content-Type: text/html
Transfer-Encoding: chunked

4
Chun
9
ked Trans
12
fer Encoding
0

Location

指定重定向的目標(biāo)URL

User-Agent

用戶(hù)代理,既是誰(shuí)實(shí)際發(fā)送請(qǐng)求、接受響應(yīng)的,例如手機(jī)瀏覽器等

Range/Accept-Range

按范圍獲取數(shù)據(jù)

按范圍取數(shù)據(jù)

Accept-Range: bytes 響應(yīng)報(bào)?文中出現(xiàn),表示服務(wù)器??支持按字節(jié)來(lái)取范圍數(shù)據(jù) Range: bytes=<start>-<end> 請(qǐng)求報(bào)?文中出現(xiàn),表示要取哪段數(shù)據(jù) Content-Range:<start>-<end>/total 響應(yīng)報(bào)?文中出現(xiàn),表示發(fā)送的是哪段數(shù)據(jù)

作?用:斷點(diǎn)續(xù)傳、多線程下載。

其他Headers

Accept: 客戶(hù)端能接受的數(shù)據(jù)類(lèi)型。如 text/html

Accept-Charset: 客戶(hù)端接受的字符集。如 utf-8

Accept-Encoding: 客戶(hù)端接受的壓縮編碼類(lèi)型。如 gzip

Content-Encoding:壓縮類(lèi)型。如 gzip

Cache

在客戶(hù)端或者中間網(wǎng)絡(luò)節(jié)點(diǎn)緩存數(shù)據(jù),降低從服務(wù)器獲取數(shù)據(jù)的頻率,用來(lái)提高網(wǎng)絡(luò)性能

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容