引言

  我们在做接口测试的时候经常会忽略数据类型content-type的格式,以及参数Parameters和Body Data的区别和用途。

对于初次接触接口的同学来说,自己在发送一个http请求时,总会遇到这样那样的问题,比如必传参数不存在啊。

出现这样类似问题的问题首先排除的应该是content-type是否正确,那什么是content-type呢?

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

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

所以在测试请求之前,一定要搞清楚http的数据格式是什么类型的。

这里主要讲的是Http协议请求方式之Post方法,相对于Get方法而言它们区别在于:

  GET:从指定的资源请求数据。

  POST:向指定的资源提交要被处理的数据

最直观的表现就是:

GET把参数包含在URL中,POST通过Request Body传递参数将请求整体提交给服务器。所以接口测试时要区分两种方法对待。

下面介绍POST请求中content-type的三种数据类型:

  1. content-type:application/x-www-form-urlencoded
  2. content-type:application/json
  3. content-type:multipart/form-data

  

  第一种类型

1、【content-type:application/x-www-form-urlencoded】

如果不指定content-type,默认使用此格式。

参数格式:key1=value1&key2=value2。

假设使用Parameters参数格式,而不设置content-type,默认使用此格式。

反之如果设置content-type:application/json,就会报错。

 如图:

  

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

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

如图:

  第二种类型

2、【content-type:application/json】

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

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

如图:

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

  第三种类型

3、【content-type:multipart/form-data】

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

  后续补充实例~

  总结

综上所述,我们日常做接口测试基本上使用的前两种,这两种归结出来就是三种不同场景:

  • application/x-www-form-urlencoded + Parameters

  • application/x-www-form-urlencoded + Body Data

  • application/json + Body Data

  • get请求,直接在url上用"&"拼接参数

Jmeter的Parameters和Body Data两种参数化方式,一般来说,Get请求用Parameters,Post请求用Body Data。

确切来说对于Post的方法是:普通的post请求和上传接口,选择Parameters。

Json和Xml点数据格式请求接口,选择Body。

详细来解释,根据post请求数据的格式,分两种情况:map格式、json格式。

使用什么数据类型,还要看接口定义的是什么类型,如接口定义的是application/x-www-form-urlencoded这种类型,content-type就得使用这个,反之亦然。否则报错!

参考文献1https://testerhome.com/topics/12687

参考文献2https://www.cnblogs.com/insane-Mr-Li/p/10686797.html

												

jmeter处理http请求Content-Type类型和传参方式的更多相关文章

  1. .NET 内存基础(通过内存体验类型、传参、及装箱拆箱)

    该随笔受启发于<CLR Via C#(第三版)>第四章4.4运行时的相互联系 一.内存分配的几个区域 1.线程栈 局部变量的值类型 和 局部变量中引用类型的指针(或称引用)会被分配到该区域 ...

  2. Jmeter学习——http请求Content encoding的重要性

    今天在测试一个接口的时候,遇到的问题,困扰了我一天 下面是一个接口,使用的是post请求,Content-Type为application/json 返回参数如下: 瞬间懵逼了!!!为什么呢?渠道是存 ...

  3. JMeter多个请求按照比例并发的几种方式

    一.需求 在压测的过程中,为了能够压测整个链路,通常需要多个接口进行并发, 每个接口的请求比例不尽相同. 比如此时此刻,我在写博客,很多人在浏览博客,或者点赞.评论博客等等等,这些行为占比是不同的. ...

  4. Jmeter 接口测试-请求 Headers 与传参方式

    1.添加信息表头. 注意:1.使用Parameters时,Content-Type要么不传,要么传application/x-www-form-urlencoded,因为不传时默认值就是applica ...

  5. char类型在传参时接收不到数据的原因

    mybatis的原因!!!!! 数据库这个样子 在postman中调用接口:SQL select * from T_TRAIN_MARSHALLING where TRAIN_NUM is null ...

  6. Postman:传递的参数是List类型时 传参格式的写法

    Postman传递的参数是List类型 实体类中引用了一个List,泛型为其他实体类 参数是List集合时,Postman中参数格式如下图所示: 有不明白的地方,欢迎留言

  7. feign发送get请求时用复杂类传参

    如题,网上都有做法,只有有些人说的不清楚.而我自己也遇到了其他坑这里记录一下 1.就是网上说的做法: 客户端:application.yml加上配置: feign: httpclient: enabl ...

  8. angularjs 请求数据转换为Form Data传参

    在angularjs中配置好服务,有时传参会导致后台借不到值或者后台直接报错: 这就与后台框架有关,如果后台是以public ModelAndView接收接口传过来的参数,这种情况,前台传参的形式比较 ...

  9. Jmeter发送post请求报错Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported

    常识普及: Content-type,在Request Headers里面,告诉服务器,我们发送的请求信息格式,在JMeter中,信息头存储在信息头管理器中,所以在做接口测试的时候,我们维护Conte ...

随机推荐

  1. $loj\ 6045$ [雅礼集训 $2017\ Day8$] 价 网络流

    正解:网络流 解题报告: 传送门$QwQ$ 这题还,挺有趣的我$jio$得. 考虑依然先是照着最小割的模子建图呗,然后从意义上来分析,割一条边就相当于不吃一种减肥药/买一种药材.由已知得,买的药材数量 ...

  2. 洛谷P2858 奶牛零食 题解 区间DP入门题

    题目大意: 约翰经常给产奶量高的奶牛发特殊津贴,于是很快奶牛们拥有了大笔不知该怎么花的钱.为此,约翰购置了 \(N(1 \le N \le 2000)\) 份美味的零食来卖给奶牛们.每天约翰售出一份零 ...

  3. Java虚拟机详解(十一)------双亲委派模型

    在上一篇博客,我们介绍了类加载过程,包括5个阶段,分别是“加载”,“验证”,“准备”,“解析”,“初始化”,如下图所示: 本篇博客,我们来介绍Java虚拟机的双亲委派模型,在介绍之前,我先抛出一个问题 ...

  4. JAVA8学习——Stream底层的实现(学习过程)

    Stream底层的实现 Stream接口实现了 BaseStream 接口,我们先来看看BaseStream的定义 BaseStream BaseStream是所有流的父类接口. 对JavaDoc做一 ...

  5. pom.xml引入依赖时顺序错误而编译异常

    java.lang.NoClassDefFoundError: Lorg/springframework/beans/factory/access/BeanFactoryReference; at j ...

  6. angular.foreach 循环方法

    angular循环给一个 angular监听的变量复值时.最好还是用angular自带的循环方法.“angular.foreach” 尽量避免代码的冲突,最好不要jq angular 混用 var o ...

  7. Angular.的简单运用

    从script引用angular文件.开始编写angular事件: 在angular文件中添加属性: ag-xxxx;初始化使用: ng-app="name"; 没有这个属性就不会 ...

  8. Huffman树及其编码(STL array实现)

    这篇随笔主要是Huffman编码,构建哈夫曼树有各种各样的实现方法,如优先队列,数组构成的树等,但本质都是堆. 这里我用数组来存储数据,以堆的思想来构建一个哈弗曼树,并存入vector中,进而实现哈夫 ...

  9. iSO垂直滑动条VerticalSlider

    由于项目需要实现一个垂直的Slider,滑动条使用UIlabel实现,按钮使用UIButton,按钮可以设置背景图片,代码如下 VerticalSlider.h // // VerticalSlide ...

  10. docker发布.net core程序的坑

    docker发布遇到的两个问题 1:Could not resolve CoreCLR path. For more details, enable tracing by setting COREHO ...