1、引言
在微服务最流行的年代,开发与测试是不可缺少的环节(这说的跟没说一样),
至于开发的环节,我就不说了(说的好像我会似的…);
来聊一聊测试环节中的接口测试(这是我擅长的)。
2、参数传递方式
2.1 定义及方式
接口测试目的:
验证微服务对客户端或服务暴露的接口是否能够正常工作。
主要方式:
构造并发送HTTP请求消息给微服务,然后接收并验证微服务回复的HTTP响应消息。
2.2 Path Parameter(路径参数)
1、在HTTP中,URL是一个很基本的概念,它表示的是服务端资源的路径,供客户端寻址和访问。
2、URL一般是常量字符串,但在有些情况下,URL中某些部分是可变的。
3、Path Parameter就是URL中可变的部分,其描述方式为{参数名}。
如:路径/blogs是不变的,而路径/blogs/{id}是可变的,其中可变的id就是路径参数。
4、Path Parameter一般用来指定集合中的某个具体元素。
如:服务端可能有许多blogs,而/blogs/{id}表示的就是某一篇具有特定id的blog。
5、Path Parameter的特点如下:
一个URL中可以包含多个路径参数。
在传递Path Parameter时,直接将{参数名}替换成具体的值,例如/blogs/123456。
Path Parameter是必填的,不是选填的。
2.3 Query Parameter(查询参数)
1、和Path Parameter相同的是,Query Parameter也是URL的一部分,通常用来对资源进行排序或过滤。
2、除此之外,它们有许多不同点:
Query Parameter以" ?"符号开始,并以键值对(参数名=参数值)的形式呈现,同时用&符号区分不同键值对。
如:blogs?date=20200305&category=work就包含了两个参数date和category,传递的值分别是20200305和work。
根据服务端要求的不同,Path Parameter可以赋值,也可以不赋值(为空),还可以完全不传递。
敲黑板:
Query Parameter和Path Parameter存在另一个共同点,那就是统一遵守URL编码。
URL编码也叫做百分号编码,是针对一些URL中无法直接包含或者有特殊意义的字符进行编码的方式,
如:空格被编码为%20,%被编码为%25。
2.4 Request Body参数
1、HTTP body自身有许多类型,其具体类型由HTTP head中的Content-Type参数决定。对于不同类型的HTTP body来说,其携带参数的方式也是不同的。
2、老规矩,直接上例子:
最经典的HTTP body类型是application/x-www-form-urlencoded,即URL编码的表单。
其传递参数的方式与查询参数十分相似,
如:date=20200305&category=work。
具体来说,虽然application/x-www-form-urlencoded类型的body也是采用URL编码方式,但是编码规则略有不同。
差别,如下:
在URL编码中,空格的默认编码是%20,而在application/x-www-form-urlencoded类型的body中,其编码既可以是%20,也可以是+。
3、这类表单参数不足之处,就是不能传递嵌套参数。在需要传递嵌套等复杂类型参数时,我们可以使用JSON类型的body。
4、在HTTP中,JSON是MIME媒体类型的一种,其Content-Type为application/json。
它可以传递各种复杂类型的参数,
如:{“date”: “20200305”, “category”: [“work”, “life”], “title”: {“subtitle”:“http”}}。
2.5 Request Headers参数
1、Path Parameter 和Query Parameter都是URL的一部分。在HTTP定义中,它们都位于HTTP请求消息的头部。
2、实际上:对于HTTP消息头部来说,除了可以包含Path Parameter 和Query Parameter外,还可以包含许多其他参数。
它们统一叫做Request Headers参数。
3、这些参数属于metadata,即数据的数据,是用来描述其他数据的数据。
如:Content-Length参数用来描述HTTP body的字节长度,Accept-Encoding参数用来描述客户端接受的文本编码方式。