HTTP协议的接口测试怎么做?
Posted 凡猫软件测试
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP协议的接口测试怎么做?相关的知识,希望对你有一定的参考价值。
HTTP接口
下面介绍最常用的HTTP接口。
● HTTP接口的应用场景:Web网站、公司的OA服务、小型手机游戏等。
● HTTP响应也是由三个部分组成,分别是:状态码、消息报头、响应正文。
HTTP 即超文本传输协议(Hypertext Transfer Protocol) , 是基于请求/响应范式的(相当于客户机/服务器)。一台客户机与服务器建立连接后,发送一个请求给服务器;服务器接到请求后,给予相应的响应信息。HTTP的默认端口是80, 可以不写。
下面用具体的实例来说明 HTTP接口。
这里使用的是 Fiddler工具。该工具可以抓取HTTP数据包,辅助进行测试。通过该工具抓取特定网页的协议数据包,来分析 HTTP 的知识点。该工具的具体使用方法会在第3章详细讲到,目前读者只需要知道该工具可以抓取HTTP 数据包即可。
下面抓取的是百度个人中心首页的“百度新闻”一“个性推荐”栏目中的短数据,页面如图2-3-1所示。
▲ 图 2-3-1 百度个人中心
使用Fiddler工具获取的接口如图2-3-2所示。
1. HTTP请求的三个重要数据
Host: i.baidu.com
Connection:keep-alive
Content-Length: 0
Accept: */*
Origin: http://i.baidu.com
X-Requested-With: XMLhttp_request
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebkit/537.36 (Khtml,Like Gecko) Chrome/49.0.2623.110 Safari/537.36
Referer: http://i.baidu.com/
Accept-Encoding: gzip,deflate
Accept-Language:zh-CN,zh;q=0.8
Cookie:
BDUSS=d0b2JQSGxBbXQ3NUhIcWpqT21xdHVGY3gyTFJENk1FbWhSNjRuSmFLOTB4emRaSVFBQ
UFBJCQAAAAAAAAAAAEAAADOnjcitPPJ9E43
//名词解释
///
NOCITCE
下面介绍消息报头的主要参数。
● Host:i.baidu.com
指定被请求资源的 Internet主机和端口号,默认是80端口
● Connection:keep-alive
HTTP长连接(持久连接), 客户端和服务器端建立一次连接之后,可以在这条连接上进行多次请求/响应操作。持久连接,可以设置过期时间
(Keep-Alive:timeout=60) , 也可以不设置。
● Accept: */*
表示浏览器能接受任何类型的文件。
● X-Requested-With: XMLHttpRequest
表明这是一次Ajax请求(异步), 非传统请求(同步)。
● User-Agent: Mozilla/5. 0 (Windows NT
6. 1; WOW 64)
用户代理。告知服务器请求方所使用的操作系统及版本、CPU类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
● Accept-Encoding:gzip,deflate
设置从网站中接收的返回数据是否进行gzip压缩。
● Cookie: BDUSS=d0b2JQSGxBbXQ3NUh
IcWpqT21xd
储存在本地的缓存数据,随HTTP请求一起发送,用来给服务器端验证,比如是否已经登录。
●请求正文:p=xinwen&c=pernews.
HTTP 响应的三个重要数据
● 状态码:
HTTP/1. 1 200 OK
● 消息报头:
Server: nginx
Date: Tue, 05 Dec 2017 08:31:08 GMT
Content-Type:application/JSON; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: php/5.3.24
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control:no-store,no-cache,must-revalidate,post-check=0,pre-check=0
Pragma:no-cache
● 响应正文:
{"status": 0, "statusInfo": "". "data": {"news":[{“nid”:”15108122493597820269”,”sourcets”:”1512447114000”,”ts”:”1512453966000”,”title”:”\u6f58\u77f3\u5c79\u5e2e\u8001\u5bb6\u5356\u82f9\u679c\u7956\u575f\u88ab\u6252\ufflf\u8001\u4e61\uffla\u7956\u575f\u660e\u660e\u90fd\u5728", "url": "http: \ / \ /news.ifeng.com\ /a\ /20171205\ /53870395 O.shtml", "imageurls": [{"url":"http:\ / \ /t10.baidu.com\ /it\ /u=3005973888, 565646067&fm=173&s=72219143520B0753D380B4B70300D041&w=218&h=146&Img.JPEG","height": 146, "width": 218, "url_webp":”https: \ / \ /timg01.bdimg.com\ /timg?news&quality=80&size=f218_146&wh_rate=0&imgtype-4&sec=0&di=3b739c57cd68d41d10045ba2acefcd10&er=1&src=http%3A%2F%2Ft10.baidu.com%2F1t%2Fu%3D3005973888%2C565646067%26fm%3D173%26s%3D72219143s520B0753D380B4B70300D041%26w%3D218%26h%3D146%26img. JPEG"} . .
下面介绍响应的消息报头。
"Content-Type:application/JSON;charset=UTF-8” 表示服务器发送的实体数据的数据类型。
在HTTP请求的返回数据包中,响应状态码分为以下5种。
● lxx: 消息。一般是告诉客户端,请求已经收到了,正在处理,别急····.
● 2xx: 处理成功。一般表示请求收悉、我明白你要的、请求已受理、已经处理完成等信息。
● 3xx: 重定向到其他地方。它让客户端再发起一个请求,以完成整个处理过程。
● 4xx: 处理发生错误,错误来自客户端。例如,客户端请求的是一个不存在的资源、客户端未被授权、禁止访问等。
● 5xx: 处理发生错误,错误来自服务器端。例如,服务器端抛出异常、路由出错、HTTP版本不支持等。
HTTP 发送请求的方式
HTTP中有四种发送请求的方式:GET、POST、PUT和 DELETE。
● GET: 向特定的资源发出请求。
● POST: 向指定资源提交“数据进行处理”请求(例如,提交表单或者上传文件), 数据被包含在请求体中。POST 请求可能导致新的资源的创建,以及(也可能是“或”) 已有资源的修改。
● PUT: 向指定资源位置上传其最新内容。
● DELETE: 请求服务器执行删除操作。
在实际应用中常用的是GET和POST.其他的请求方式都可以通过这两种方式间接地实现。
GET 方式和POST 方式的区别
HTTP 发送请求最主要的两个方式是GET和POST, 这两者有哪些区别呢?
区别一
对请求参数的处理方式不同(直观的区别)
● GET请求:请求的数据会附加在URL之后,以“?”分隔URL和传输数据,如有多个参数则用“&”连接。URL采用的是ASCII编码格式,而不是Unicode 编码格式,即所有的非ASCII字符都要在编码之后再传输。
举例:https://www.v2ex.com/api/nodes/show. JSON?name=Python
● POST请求:POST 请求会把请求的数据放置在HTTP 请求包的 Body 数据中,数据包的形式可以是“参数名 1=参数值1&参数名 2=参数值2”, 也可以是JSON 格式(键值对)。当然,JSON格式是一种通用的方式。
举例:http: //192. 168. 1. 171: 8081/api/user_sign/
Body数据:{"time":"1499933825", "sign": "deb697c7fffcca828a7a03a218b2cda5”}
区别一
传输数据的大小不同
HTTP 没有对传输数据的大小进行限制,也没有对URL 的长度进行限制。
GET:特定浏览器和服务器对URL的运及有限刷。例如。IE对URL长度的限制是2083Byte(2x1024Byte+35Byte)。其他浏览器( 如Netscape, FireFox)在理论上没有长度的限制,其限制取决于操作系统的支持。因此,在采用GET方式提交数据时,传输数据会受到URL长度的限制。
POST: 由于不是通过URL传值,在理论上数据的大小不受限制。Web服务器会对采用 POST 方式提交的数据的大小进行限制,例如,Apache、IIS6都有各自的配置。
区别一
安全性不同
POST方式需要抓包才能获取到数据,变相地提高了安全性。
往期精彩文章
以上是关于HTTP协议的接口测试怎么做?的主要内容,如果未能解决你的问题,请参考以下文章