ajaxpost请求data是url还是body

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ajaxpost请求data是url还是body相关的知识,希望对你有一定的参考价值。

参考技术A 是url类。
根据Http的请求方法对应的数据传输能力把Http请求分为Url类请求和Body类请求,Url类请求包括但不限于GET,HEAD,OPTIONS,TRACE等请求方法,Body类请求包括但不限于POST,PUSH,PATCH,DELETE等请求方法。
在语义上来说,例如GET请求是查询或者获取服务端的资源的,POST请求是向服务器push数据或者创建资源的,其它同类请求方法多少都有点相同的含义,不过它们谁有谁该做的事,例如支持缓存,探测响应头和断点续传等。

JMeter基础:请求参数Parameters Body Data的区别

  

使用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请求完成了

技术图片

 

以上是关于ajaxpost请求data是url还是body的主要内容,如果未能解决你的问题,请参考以下文章

在 Jquery Ajax POST 中获取 400 错误请求错误

AJAX POST 上的 JSON Stringify 400 错误请求

如何在ajax post方法中发送json请求

AJAX Post 请求 URL 添加了奇怪的字符

如何在ajax post中获取文件上传的状态

ajax POST,尝试添加目录链接添加路径两次