本文來自公開課筆記,主要做知識的記錄,謝謝!
·接口測試核心技術--URL&HTTP協議詳解。
·URL:
統一資源定位符。
示例:
https://ke.qq.com/course/315793?tuin=15945f87
通常來說,一個URL通常由以下幾個部分構成:協議、域名、端口、路徑和URL地址參數。
·協議:
protocol,通常來說是URL中的第一部分(分號之前的部分)
所謂協議:
通信雙方對於數據的格式、含義、規程等所做的約定。
常見的通信協議有:
http
https(http+ssl)
ssh
ftp
smtp
pop3
oracle
mysql
sql server
about
config
javascript
·域名:
domain/hostname。是指協議之后的部分,通常來說可以是服務器的虛擬域名,機器名,IP地址。
比如說:
www.baidu.com
192.168.2.212
localhost
127.0.0.1
xiaozhifei(機器名)
·端口:
port端口是跟在域名之后,格式為:
域名:端口
端口是由服務器來配置的,是用來監聽客戶端的請求的。
通常來說,如果服務器所使用的端口與其所采用的通信協議是默認的匹配關系的話,則客戶端在請求時,是可以不用填寫端口。
常見協議與其默認端口的對應關系如下:
http--80
ssl--443or8443
ssh-22
ftp-21
smtp-25
pop3-110
oracle:1521
mysql:3306
sql server:1433
·路徑:
path,一般來說,表示要訪問的資源在服務器的容器中所存儲的位置。
示例:
/course/315793
·URL地址參數:
通常是以問號作為連接符,拼接在URL的path部分的最后。
本身的數據組織格式為鍵值對應格式:
key1=value1&key2=value2&...&keyN=valueN
PS:從廣義的角度來說,URL地址參數本身也屬於URL PATH的一部分。
·HTTP協議:
超文本傳輸協議。該協議分為兩個部分:http request(請求部分),http response(響應部分).
·http request的構成:
一般來說,http請求是由三個部分構成:request line、request header、request body。
·request line:
請求行,通常來說就是請求數據包的第一行內容,包含以下信息:request method、request path、protocol/version
示例:GET /phpwind/ HTTP/1.1
·request method:
請求方法,常見的http的請求方法有get、post、put、patch、options、delete、trace、header等。
請求方法是由接口(開發)決定的。
PS:在工具or瀏覽器中,不指定方法的情況下,采用的就是get
。
get和post的區別:
·在協議層面,都是請求方法,都可以用來傳遞參數給服務器。
·在web(瀏覽器)中,使用get方法傳遞的參數會變成URL地址參數。使用post方法,則是在request body中。
·在瀏覽器中,URL地址的長度是有限制。
通常核心的,比較長的數據都會采用post方法進行傳遞。
·在瀏覽器中,通過get方法獲取的數據會在本地緩存(cache),post方法獲取的數據是不會在本地緩存的。
·request path:
即URL的path和URL地址參數部分。
·protocol/version:
協議和版本,要求請求和響應所使用的協議保持一致。
·request headers:
請求頭,是指從第二行開始,到第一個空行結束的部分。
請求頭一般表示客戶端和服務器進行通信時所需要的一些控制和交互信息。
請求頭是鍵值對應的,格式為: key:value
http協議規定了很多標准的請求頭,代表特殊的通信含義和作用。
·User-Agent:
用來告知服務器,客戶端的一些配置信息(硬件、系統層面),絕大多數情況下,服務器都是通過該信息頭來識別用戶來源。通常cookie的自動管理是和這個信息頭有關的。
·Content-Type:
該信息頭是用來告知服務器,所發送的請求主體(body)的數據組織格式。
常見的有:
application/x-www-form-urlencoded 一般是鍵值對的數據。key=value&key=value
一般來說,不指定Content-Type的情況下,默認就是application/x-www-form-urlencoded。
application/json 數據就是就json 格式
application/xml 數據就是就xml格式
multipart/form-data; boundary=xxx
混合表單格式,通常是用來實現上傳或者包含上傳操作的業務。可以實現多種數據格式混合傳遞的效果。
boundary是分隔符,比實際的分隔符要少兩個下划線。
·Cookie:也是請求頭的一部分。
·request body:
請求主體,是指請求包的第一個空行之后的所有內容。
請求主體的內容,數據組織格式等都和業務有關。
·http response:
http響應通常也是由三個部分構成:response line 、response header、response body。
·response line:
響應行,通常來說就是響應數據包的第一行內容,包含以下信息: protocol/version、response code、response message
示例:HTTP/1.1 200 OK
·response code:
響應代碼,又叫狀態碼。是服務器用來告知客戶端,服務器對於請求的處理狀態的。一般來說,狀態碼是三位長度的數字構成,然后首位數字表示大的分類。
1xx:表示傳輸控制信息。
2xx:典型的就是200,表示服務器對於請求的處理是成功的。
PS:成功僅僅表示通信邏輯上的成功,並不代表業務的成功。
3xx:表示重定向操作
PS:通常來說,1xx、2xx、3xx都表示請求成功。
4xx:表示客戶端錯誤。
5xx:表示服務器錯誤。
PS:通常來說,我們去做接口測試的時候,尤其是腳本開發和調試階段,如果出現了4xx和5xx錯誤,基本上都是因為我們所封裝的數據、方法有誤導致。
·response message:
是接在響應代碼之后的,是用來描述響應代碼所表示的含義的。
·response header:
響應頭,是指從響應包的第二行開始,到第一個空行截至的部分,通常包含服務器反饋給客戶端的控制、交互信息。
格式、含義等都和請求頭類似。
·response body:
響應主體。
·掌握http request,可以幫助我們去實現請求包的封裝。
掌握http response,可以幫助我們去自動化的判斷請求是否成功,或者實現數據的關聯。