天天看點

post json背景處理資料_Fiddler模拟post四種請求資料

前言:

Fiddler是一個簡單的http協定調試代理工具,它界面友好,易于操作,是模拟http請求的利器之一。

在接口測試中,接口通常是get請求或者post請求。get請求的測試一般較為簡單,隻需設定好相關的請求頭,url寫正确即可。但是在測試post請求時,請求資料格式的設定往往就稍顯複雜。尤其是在開發人員的接口文檔描述不清楚的情況下,會影響到測試效率。

故而本文總結了下post請求常見的四種資料格式和對應的fiddler模拟請求的構造方法。

post請求主體詳解:

對于get請求來說沒有請求主體entity-body。對于post請求而言,不會對發送請求的資料格式進行限制,理論上你可以發任意資料,但是伺服器能不能處理就是另一回事了。伺服器收到資料後,如何解析資料呢?

它會以請求頭中的Content-Type設定的内容來進行資料解析。确定好Content-Type的格式之後,請求主體的資料格式也就确定下來了。

Content-Type的格式有四種:分别是application/x-www-form-urlencoded(這也是預設格式)、application/json、text/xml以及multipart/form-data格式。

接下來就詳細地介紹每一種資料格式對應的fiddler請求模拟的實作情況。

四種Post請求資料格式:

(一)application/x-www-form-urlencoded資料格式

這是post請求最常見也是預設的資料送出格式。它要求資料名稱(name)和資料值(value)之間以等号相連,與另一組name/value值之間用&相連。例如:parameter1=12345&meter2=23456。将請求的内容進行格式化了,其實這個方法同時簡化的用戶端發送,也簡化了伺服器端擷取,伺服器通過getParameters(String name)即可擷取到傳送來的資訊。

用fiddler模拟請求的話,請求頭和請求主體的内容可以這樣構造:

post json背景處理資料_Fiddler模拟post四種請求資料

模拟請求之後,從傳回結果可以檢視到我們的請求資料:

post json背景處理資料_Fiddler模拟post四種請求資料

(二)application/json資料格式

application/json格式的請求頭是指用來告訴服務端post過去的消息主體是序列化後的 JSON 字元串。

用fiddler模拟請求的話,請求頭和請求主體的内容可以這樣構造:

post json背景處理資料_Fiddler模拟post四種請求資料

模拟請求之後,從傳回結果可以看到我們的請求資料:

post json背景處理資料_Fiddler模拟post四種請求資料

(三)text/xml資料格式

用fiddler模拟請求的話,請求頭和請求主體的内容可以這樣構造:

post json背景處理資料_Fiddler模拟post四種請求資料

模拟請求之後,從傳回結果可以看到我們的請求資料:

post json背景處理資料_Fiddler模拟post四種請求資料

(四)multipart/form-data資料格式

除了傳統的application/x-www-form-urlencoded表單,我們另一個經常用到的是上傳檔案用的表單,這種表單的類型為multipart/form-data。

用fiddler模拟請求的話,請求頭和請求主體的内容可以這樣構造:

第一步,先設定好請求頭格式,然後點選upload file...

post json背景處理資料_Fiddler模拟post四種請求資料

第二步,上傳你的檔案,這裡我上傳一個png的圖檔

post json背景處理資料_Fiddler模拟post四種請求資料

這是fiddler根據我們上傳的檔案自動調整生成的請求,在請求頭中看到,我們需要選擇一段資料作為“分割邊界”(boundary屬性),這個“邊界資料”不能在内容其他地方出現,一般來說使用一段從機率上說“幾乎不可能”的資料即可。

每次post浏覽器都會生成一個随機的30-40位長度的随機字元串,浏覽器一般不會周遊這次post的所有資料找到一個不可能出現在資料中的字元串,一般都是随機生成。選擇了這個邊界之後,浏覽器便把它放在Content-Type 裡面傳遞給伺服器,伺服器根據此邊界解析資料。

下面的資料便根據boundary劃分段,每一段便是一項資料。(每個field被分成小部分,而且包含一個value是"form-data"的"Content-Disposition"的頭部;一個"name"屬性對應field的ID等等,檔案的話包括一個filename)

模拟請求之後,從傳回結果可以看到我們的請求資料:

post json背景處理資料_Fiddler模拟post四種請求資料

繼續閱讀