copy一位大神的博客:
引用博客地址:https://www.cnblogs.com/star12111/p/13160383.html
因为我们在做接口测试的时候,经常会碰到post请求方式。
而post请求就是上传参数,传递数据。不同于get请求,是请求数据。
但是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请求数据:
一般来说,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请求完成了。
以上就是二者的区别了。
总结一下,如果post传递的数据是key-value格式时,基本是用Parameters的方式上传数据。
如果post传递的数据是json格式时,则要选择Body Data的方式上传数据。
另外要保证我们传的是json格式,我们还要在请求头中声明一下请求参数的格式为json,具体步骤就是在http信息头管理器中增加一个Content-Type,值为:application/json,这样就可以保证我们上传的数据是json格式了。