前言:
Fiddler是一個簡單的http協議調試代理工具,它界面友好,易於操做,是模擬http請求的利器之一。json
在接口測試中,接口一般是get請求或者post請求。get請求的測試通常較爲簡單,只需設置好相關的請求頭,url寫正確便可。可是在測試post請求時,請求數據格式的設置每每就稍顯複雜。尤爲是在開發人員的接口文檔描述不清楚的狀況下,會影響到測試效率。瀏覽器
故而本文總結了下post請求常見的四種數據格式和對應的fiddler模擬請求的構造方法。服務器
post請求主體詳解:
對於get請求來講沒有請求主體entity-body。對於post請求而言,不會對發送請求的數據格式進行限制,理論上你能夠發任意數據,可是服務器能不能處理就是另外一回事了。服務器收到數據後,如何解析數據呢?app
它會以請求頭中的Content-Type設置的內容來進行數據解析。肯定好Content-Type的格式以後,請求主體的數據格式也就肯定下來了。工具
Content-Type的格式有四種:分別是application/x-www-form-urlencoded(這也是默認格式)、application/json、text/xml以及multipart/form-data格式。post
接下來就詳細地介紹每一種數據格式對應的fiddler請求模擬的實現狀況。測試
四種Post請求數據格式:
(一)application/x-www-form-urlencoded數據格式url
這是post請求最多見也是默認的數據提交格式。它要求數據名稱(name)和數據值(value)之間以等號相連,與另外一組name/value值之間用&相連。例如:parameter1=12345&meter2=23456。將請求的內容進行格式化了,其實這個方法同時簡化的客戶端發送,也簡化了服務器端獲取,服務器經過getParameters(String name)便可獲取到傳送來的信息。spa
用fiddler模擬請求的話,請求頭和請求主體的內容能夠這樣構造:
模擬請求以後,從返回結果能夠查看到咱們的請求數據:
(二)application/json數據格式
application/json格式的請求頭是指用來告訴服務端post過去的消息主體是序列化後的 JSON 字符串。
用fiddler模擬請求的話,請求頭和請求主體的內容能夠這樣構造:
模擬請求以後,從返回結果能夠看到咱們的請求數據:
(三)text/xml數據格式
用fiddler模擬請求的話,請求頭和請求主體的內容能夠這樣構造:
模擬請求以後,從返回結果能夠看到咱們的請求數據:
(四)multipart/form-data數據格式
除了傳統的application/x-www-form-urlencoded表單,咱們另外一個常常用到的是上傳文件用的表單,這種表單的類型爲multipart/form-data。
用fiddler模擬請求的話,請求頭和請求主體的內容能夠這樣構造:
第一步,先設置好請求頭格式,而後點擊upload file...
第二步,上傳你的文件,這裏我上傳一個png的圖片
這是fiddler根據咱們上傳的文件自動調整生成的請求,在請求頭中看到,咱們須要選擇一段數據做爲「分割邊界」(boundary屬性),這個「邊界數據」不能在內容其餘地方出現,通常來講使用一段從機率上說「幾乎不可能」的數據便可。每次post瀏覽器都會生成一個隨機的30-40位長度的隨機字符串,瀏覽器通常不會遍歷此次post的全部數據找到一個不可能出如今數據中的字符串,通常都是隨機生成。選擇了這個邊界以後,瀏覽器便把它放在Content-Type 裏面傳遞給服務器,服務器根據此邊界解析數據。下面的數據便根據boundary劃分段,每一段即是一項數據。(每一個field被分紅小部分,並且包含一個value是"form-data"的"Content-Disposition"的頭部;一個"name"屬性對應field的ID等等,文件的話包括一個filename)
模擬請求以後,從返回結果能夠看到咱們的請求數據:
以上