[TOC]
<br>
### HTTP 協議介紹
HTTP協議是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是一個屬于`應用層`的面向對象的傳輸協議。
HTTP協議工作于客戶端-服務端架構為上。瀏覽器作為HTTP客戶端通過URL向HTTP服務端即WEB服務器發送所有請求。WEB服務器根據接收到的請求后,向客戶端發送響應信息。
總結:HTTP消息是一種特別常用的客戶端與服務器之間交換數據的方式

**特點:**
- 無連接:限制每次連接只處理一個請求。服務器處理完客戶的請求,并收到客戶的應答后,即斷開連接
- 無狀態:每個請求都是獨立的,不會自動記憶狀態。聰明的人們,為了解決對話能保持狀態,使用了session與cookie來解決。
### HTTP 請求的組成
如果學習過Fiddler的朋友,可以抓一下前面一節中的簡單GET與POST請求,在Inspector的raw窗口下,可以看到如下信息:
GET請求中,body內容為空,參數主要放在url中。

POST請求中,參數一般放在body中。

通過上面兩個請求,我們可以總結出,HTTP請求,主要有三部分組成
- 起始行:包含請求方法,請求地址
- 請求頭headers:格式如key:value,主要用于傳遞客戶端的特定配置信息
- 請求體body: post方法存儲參數的位置
### Postman 發起一個API請求
創建一個請求,主要配置四部分
1.請求方法method;2.請求地址URL;3.請求頭headers;4.請求體body
對應在Postman中的設置位置如

#### Method
在HTTP中的method有GET、HEAD、POST、PUT、DELETE、CONNECT、OPTIONS、TRACE,其中最常用的只有`GET`與`POST`
#### URL
點擊按鈕“Params”會展開參數編輯窗口,在窗口中填入的參數鍵值對,會自動拼接到URL參數中。直接寫在URL中的參數,也會自動以鍵值對的形式顯示在編輯窗口
#### Headers
HTTP通用的headers有一下內容:

當然,我們可以添加任意名稱的headers,在Postman中,不管是headers的key或者value,輸入部分字符后都有“自動聯想”提示,非常的好用!
#### Cookies
在Native APP中,提供了Cookie管理器。

>[info] 在客戶端,發送請求時附帶上cookie,一般用于**保持用戶狀態**。但是關鍵的cookie可不是客戶端生成哦,而是服務端創建的。服務端會先創建一個會話Session,將SessionID作為cookie設置到客戶端,在之后的一系列請求中只要帶上SessionID,服務端則會認為這是同一個用戶在訪問了。
在cookie的使用中,有一個非常重要的規則,就是`Cookie不能跨域訪問`。例如在B網站中不能使用訪問A網站時生成的cookie。因此,在設置cookie時,需要先指定域名,然后設置cookie內容。

#### Body
在POST方法中,參數通常會設置在Body中。
*注意:參數值不會自動進行`URL-encoded`,如果想要某參數值URL-encoded,可以選擇參數值字符串,右鍵選擇“EncodeURIcomponent”即可*
在Body參數的格式上,有四種:“form-data”,“urlencoded”,“raw”,“binary”
當我們通過HTTP協議發送請求時,headers中攜帶的Content-Type會告訴服務器所傳參數的類型,以便于服務器能正確解析請求參數。

**“form-data"類型**,相當于"content-type": "multipart/form-data”
Form-data是默認的web表單數據傳輸的編碼類型,這模擬了在網站上填寫`表單`,并提交它。`既可以上傳鍵值對,也可以上傳文件`。
**“x-www-form-urlencoded”類型**,相當于"content-type": "application/x-www-form-urlencoded"
`只能上傳鍵值對`,會將`表單`內的數據轉換為鍵值對,并且自動對參數值進行`urlencode編碼`。

**“raw”類型**,對應"content-type"可以是“text/plain”,"application/json","text/xml",或"text/html"
可以上傳`任意格式的文本`,可以上傳text、json、xml、html等

**“binary”類型**,相當于“Content-Type”:“application/octet-stream”
只可以上傳`二進制數據`,通常用來上傳文件
### HTTP 響應的組成

HTTP響應也主要有三部分組成
- 狀態行
- 響應頭headers
- 響應體body
對應Postman中的顯示區域如:

HTTP通用的響應headers有

### 課后學習要求
好好百度下HTTP協議。關鍵是要了解HTTP協議的特點、HTTP headers中各個配置的含義、HTTP的各種響應碼的含義。
<hr style="margin-top:100px">
:-: 
***微信掃一掃,關注“python測試開發圈”,獲取更多測試開發分享!***
- 前言
- Fiddler01-抓包原理介紹與配置
- Fiddler02-菜單功能介紹
- Fiddler03-輕松玩轉Fiddler
- Fiddler04-進階使用FiddlerScript
- Fiddler05-使用FiddlerScript對微信文章互動量進行監控
- Postman01-介紹與安裝
- Postman02-HTTP請求與響應
- Postman03-Collection管理與運行
- Postman04 -變量詳解
- Postman05-初級腳本使用
- Postman06-實例小結篇
- JMeter01-JMeter就是這么簡單
- JMeter02-一個完整實戰包你學會使用JMeter
- JMeter03-在JMeter中使用BeanShell編程
- JMeter04-圖形化和非圖形化運行JMeter
- JMeter05-生成美觀的HTML測試報告
- JMeter06-JMeter+Jenkins實戰
- JMeter07-解析session與cookie