使用Jmeter測試時,很多人不知道請求參數Parameters 、Body Data的區別和用途,這里簡單介紹下
先了解一個接口的基本概念
在客戶機和服務器之間進行請求-響應時,HTTP協議中包括GET和POST兩種基本的請求方法,概念上兩者的區別是:
get:從指定的資源請求數據。
post:向指定的資源提交要被處理的數據
最直觀的表現就是:
GET把參數包含在URL中,POST通過request body傳遞參數將請求整體提交給服務器。所以接口測試時要區分兩種方法對待。
Jmeter中包含Parameters和Body Data兩種參數化的方式,區別是什么呢?
使用Parameters時,Content-Type不傳,或者直接傳application/x-www-from-urlencoded,若傳application/json出錯。
使用Body Data時,Content-Type可傳application/x-www-from-urlencoded或application/json,兩者的區別是數據格式不同。
可以從post data中看出區別:
Parameters的request請求數據:

body data的請求數據:

所以Jmeter的Parameters和Body Data兩種參數化方式,具體應該怎么使用呢?
一般來說,Get請求用Parameters,Post請求用Body Data。
精確的對於Post的說法是:
普通的post請求和上傳接口,選擇Parameters。
json和xml點數據格式請求接口,選擇Body。
詳細來解釋,根據post請求數據的格式,分兩種情況:map格式、json格式。
post請求數據為map格式
當post請求數據為map格式,即參數名、參數值為key-value鍵值對,請求的參數添加在Parameters參數表中即可,如下圖:

post請求數據為json格式
目前階段比較流行的是json格式傳遞參數,使用jmeter時,將json格式的請求數據加入到http請求BodyData中,如下圖:

另外,由於POST請求方式,如果不設置Headers的content-type,基本默認會以 application/x-www-form-urlencoded 方式提交數據。為了Post請求確保傳的是json格式,還需要在請求頭中聲明一下請求參數的格式為json,具體操作如下:
Thread Group右鍵Add》Config Element》HTTP Header Manager,打開HTTP信息頭管理器,Add一個Name為Content-Type,Value為application/json,如下圖,一個json格式的post請求完成了

