1. 程式人生 > 其它 >jmeter-Parameters和Body Data兩種方式傳參的區別

jmeter-Parameters和Body Data兩種方式傳參的區別

場景:使用Jmeter測試時,很多人不知道請求引數Parameters 、Body Data的區別和用途,經常混用,導致有時候請求出錯卻不知道原因

先了解一個介面的基本概念:

HTTP協議中包括GET和POST兩種基本的請求方法,概念上兩者的區別是:

get:從指定的資源請求資料,請求引數受字元長度限制,並且引數值在URL體現,不安全
post:向指定的資源提交要被處理的資料,引數長度不受限制,引數值不在URL體現,相對安全。

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,兩者的區別是資料格式不同。

所以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