http请求Content-Type类型和传参方式

引言

在做接口测试、性能测试的时候,调用接口时需要知道Content-Type类型,不然调用接口异常,可能需要花不少时间进行排查。

在一些时候,没有接口文档,或者接口文档没有说明Content-Type类型,在我们仅仅知道接口入参的情况下就去调用接口,结果发现调不同,却不知道问题原因。

所以,在测试之前,首先了解接口的Content-Type类型,调用接口设置后Content-Type类型,避免在这个问题上采坑。

什么是Content-Type呢?

Content-type是Http的实体首部字段,在request的请求行(或response的状态码)之后,也是首部的一部分。用于说明请求或返回的消息主体是用何种方式编码,在request header和response header里都存在。

简单来说,在客户端和服务端通过http请求交互的过程中,你总得告诉服务端你传的是什么格式的数据类型吧(方便服务端对数据进行解析)。

content-type就是告诉服务器客户端的数据类似是什么,并且是通过header头传给服务端的,如果客户端传递的数据类型是错误的,服务器是解析不出,无法验证的。

POST请求中content-type的三种数据类型

content-type:application/x-www-form-urlencoded

jmeter

jmeter如果不指定content-type,默认使用此格式。
参数格式:key1=value1&key2=value2。
假设使用Parameters参数格式,而不设置content-type,默认使用此格式。
反之如果设置content-type:application/json,就会报错。
image
image

所以使用Parameters参数格式时,要么不设置content-type类型,要么设置content-type:application/x-www-form-urlencoded,不能用content-type:application/json类型去请求,否则报错!

在http信息头管理器进行设置:
image

使用content-type:application/x-www-form-urlencoded时,还有一种将报文放在body data里面去请求。
image

content-type:application/json

以Json格式编码数据体,方便传输结构化数据(相比键值对),广泛用于 ajax 请求。

参数为json格式 :
{
 
 "key1":"value1",
 
 "key2":"value2"
 
}

image
在http信息头管理器进行设置:
image

image

使用Body Data时,Content-Type可传application/x-www-from-urlencoded或application/json,两者的区别是数据格式不同。但是如果接口定义的Content-Type数据类型是application/json,那就必须使用application/json去传递参数,否则报错!

content-type:multipart/form-data

需要在表单中进行文件上传时,就需要使用该格式,这种格式一般很的少。

text/xml

是一种使用 HTTP 作为传输协议,XML 作为编码方式的远程调用规范


参考:
https://www.bbsmax.com/A/Vx5MG2YazN/
https://blog.csdn.net/u013453787/article/details/88224587
https://blog.csdn.net/sinat_32349327/article/details/62038402

posted @ 2023-03-14 14:49  捷后愚生  阅读(1991)  评论(0编辑  收藏  举报