Postman是Restful API的测试工具。简单来讲是一款支持http协议的接口调试与测试工具,其主要特点就是功能强大、使用简单。通常无论是开发人员进行接口调试,还是测试人员做接口测试,postman通常都是首选工具。
注:作为开发人员对于这么一款工具还是要掌握的。
一、postman的安装
postman在2018年之后就不在支持浏览器版本了,所以想要使用必须下载客户端并安装使用。下面以mac为例进行安装。
1、访问官网进行下载
Download Postman | Get Started for Free
根据mac芯片选择对应的安装包进行下载。注:可见postman的更新还是很给力的,已经支持苹果自研芯片的mac了。
下载后得到的是一个zip包,解压后安装即可。
2、注册
根据提示进行注册,或者chrome有google账户的话直接登陆也是可以的。
然后就可以打开客户端了。
3、界面介绍
注:其对应的功能比较多,以后用到了再慢慢完善。
二、postman使用
1、进入工作页面
Workspaces→My Workspace 进入工作页面。
然后进入如下页面。按提示创建集合用以保存每个测试任务。
2、创建测试任务
如下图点击“+”增加tab页即新建 请求接口。
3、创建一个get请求
将如下url分别帖进去,然后点击Send按钮,效果如下。
http://c2cpicdw.qpic.cn/offpic_new/0/2852406608-274353464-C8FB78AD86BAC47595AA79E1C777FBAB/0
http://c2cpicdw.qpic.cn/offpic_new/0/2852406608-274353464-C8FB78AD86BAC47595AA79E1C777FBAB/198
注:在图示的诸如Headers等tab页中我们可以看到很多信息。
之后我们还可以将这个请求以保存下来。这样在右侧我们创建的集合里面就有了这个请求,以后如果我们想用的话就可以直接用了。
4、创建一个put请求
测试场景说明:模拟测试给腾讯云cos(对象存储)上传文件。在上传之前首先我们先得到一个类似于如下的预签名url,然后利用postman上传文件。
#预签名url如下
http://qidian-track-picfile-oa-1251316161.cos.ap-guangzhou.myqcloud.com/pic/big/3007442204/3007442204-3123815639-B7B3E03900CB5CAC0DE8ABA8EAFC3426?sign=q-sign-algorithm%3Dsha1%26q-ak%3DAKIDtZfusZGRUGla8VFNs65nb9SVP3QwCLEr%26q-sign-time%3D1668080576%3B1668084176%26q-key-time%3D1668080576%3B1668084176%26q-header-list%3Dhost%26q-url-param-list%3D%26q-signature%3D6a16a589dcbc5f204c33317a9f2de38dddaf2eb1#对应的cosid为
pic/big/3007442204/3007442204-3123815639-B7B3E03900CB5CAC0DE8ABA8EAFC3426
如下图所示:选择put方法→粘贴预签名url→切换body处→选择binary→Select File选择想要上传的文件→点击send。
效果如下。绿色 200 应该就是成功了。
验证:云cos中直接搜对应的cosid,可以看到如下数据。
预览效果如下,显然就是上传上去的文件。
注:经过测试只要不过期这个预签名url是可以反复使用的。具体来说我们可以选择不同的文件反复上传覆盖之,覆盖后在云cos对应的桶中也都是可以看到覆盖效果的。
5、携带payload参数
在Postman中,携带payload参数通常是指发送POST请求时携带JSON格式的数据。你可以在Postman的Body标签下选择raw类型,并且设置Type为JSON(application/json),然后在输入框中输入你的JSON数据。
然后 Body → raw → 粘贴即可
6、模拟带鉴权的HTTP请求
测试场景说明:模拟某saas软件拉取客户轨迹的请求。因为该saas软件带有登录态校验,更贴近实际场景。
选中该请求→右键→copy→copy as cURL 如下。
测试一:postman中创建get方法,不编辑Headers。
如下,显示登陆超时。因为没带cookie,所以会这样;符合预期。
测试二:Headers中添加上述截图赋值下来的cookie。
如下,能够拿到符合预期的数据。
测试三:不用这么复杂。复制cURL贴到方框然后自动识别Header/Body(万能)!
如下为修改会话主题的请求。选中请求→右键→Copy→Copy as cURL → 整体贴到方框即可。
注:这个赋值下来的就是一个curl语句,而且这个curl语句也是可以直接执行的。
curl 'https://testgateway.qidian.qq.com/v1/interface/inner/cloudcc_310104' \
-H 'authority: testgateway.qidian.qq.com' \
-H 'accept: application/json, text/plain, */*' \
-H 'accept-language: zh-CN,zh;q=0.9' \
-H 'content-type: application/json' \
-H 'cookie: login_url=https%3A%2F%2Foaconsole.qidian.qq.com%2Flogin%2F%3Fshow_type%3Dqa%26source%3Dworkbench; d2=BFNl8CqKj57OLqWHn0UE5ZQz3NgBSgTXshFue8upIgPAfQHJzeBXLVLKnDMbN53rjh0+BJYnrwRL6ior85vCf3QeN0m+qUswZWw/dmhzWpNClm6DV+XsWQq0YLXQss2PNxPyOiI8l7X+tAEom+PNi5BY+ZxONxMWhfVB32r6J7kYVJBeOMQWFGbRV/1Iekb1chcALFo83anjTA5g5/+6VMMem6Q+FD1FzOTwmbOvvalOvJ3ThjuDdg==; corp_uin=2854099014; aid=3007451243; aid_skey=z8RG5vixnVKfMiUX59d1+6GnXuxaeLy0/iOqMsiBjx6nJQHO5JWQa+9YkUgyLkMIvAJSOO/zc/Y9a5xIH0RyuIOKm6eaGt1uyC+YOpxkwBAT937wVhGkBkrl+aKVHxHaUeX1yRofvQLz9HM2Zy5iu3o+IgxraCsU3Ey0VuhjZDY=; login_type=workbench; source=workbench; logout_type=workbench; qd_admin_is_web=yes; qd_aid_encode=ae8194bc420a24ab91446807092632f4; qdui_loginaccount=houl@2854099014.qidian; _qddaz=QD.607891479466649; _bqqcsrf=b9aaeecaf1602ed0b7c1196c8ac8d5d111113b40; _bqq_csrf=b9aaeecaf1602ed0b7c1196c8ac8d5d111113b40; XSRF-TOKEN=b9aaeecaf1602ed0b7c1196c8ac8d5d111113b40' \
-H 'origin: https://oaadmin.qidian.qq.com' \
-H 'referer: https://oaadmin.qidian.qq.com/' \
-H 'sec-ch-ua: "Not/A)Brand";v="99", "Google Chrome";v="115", "Chromium";v="115"' \
-H 'sec-ch-ua-mobile: ?0' \
-H 'sec-ch-ua-platform: "macOS"' \
-H 'sec-fetch-dest: empty' \
-H 'sec-fetch-mode: cors' \
-H 'sec-fetch-site: same-site' \
-H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36' \
-H 'x-gseq: 1691480410964' \
-H 'x-requested-with: XMLHttpRequest' \
-H 'x-xsrf-token: b9aaeecaf1602ed0b7c1196c8ac8d5d111113b40' \
--data-raw '{"str_session_id":"commonsession_webim_2854099014_677291409754678_1691409756157","label_data":{"rpt_label_item":[],"bool_is_solved":false,"str_summary":"shuozhuo12345678"},"session_head":{"uint32_channel_type":4,"uint64_kfuin":2854099014,"uint64_kfextuin":3007451243,"str_visitid":"677291409754678"},"_bqq_csrf":"b9aaeecaf1602ed0b7c1196c8ac8d5d111113b40","_t":"1691480410964"}' \
--compressed
三、postman其他操作
1、postman测http接口
params 传参 和 body 传参还是有有一些区别的。
params传参一般用于get请求,params传参时参会附与url后面以问号的形式展出。
body传参一般用于post请求,body传参时需要在body里面写json数组,参数不会显示在地址栏。
postman中params传参与body传参区别(重要) - 技术颜良 - 博客园
(1)params传参
http://11.177.119.29:8080/privilegeService/GetDataPrivileges然后追加如下三个params参数,选择GET请求是通的。
(2)body传参
http://11.177.119.29:8080/privilegeService/GetDataPrivileges?Content-Type=application/json{"kfuin":2852199205,"kfext":3007456840,"bo_id":23
}
2、postman上传数据至云cos
0、对于腾讯云在控制台可以看到如下实用工具
请求工具:可以发送实际请求操作cos。
签名工具:顾名思义就是计算签名了。
这里想创建一个bucketname为 zs-test1-1251316161 的bucket。
(1)首先计算签名
如下通过工具即得到签名。
(2)赋值改签名使用postman发送出去即可创建新桶。
发送后立刻收到云梯的提醒了,这就说明确实生效了。
3、postman测websocket接口
(0)首先postman版本不要太低
我的这个版本就是ok的
(1)添加一个websocket请求,如下
(3)模拟数据交互
在地址栏中输入相应的websocket请求地址,点击右侧的"Connect"按钮,即建立连接。
#websocket请求地址如下(socket.io服务器地址):
ws://localhost:3000/socket.io/?EIO=4&transport=websocket#我们当前的请求地址为
wss://testwss.yingxiao.ali.com/sio/?kfuin=2852199285&EIO=3&transport=websocket
注:关于上述 ws连接、发送的消息等我们都可以通过调试工具抓包获取到。
a)如下是某应用的ws地址
b)如下是我们抓取的ws发送的具体数据
注:必须要包括前面的42,都是有含义的。(具体应该是个魔数,用于确保接受的帧是有效的websocket帧)。
42["message",{"appid":3,"xxxxxx":2852199285,"xxx":485933471712787,"seqid":17334717137346184,"d2":"R+gSVNQom0hGHr23ByqtBLEZFgtvyXzIIblrGPpnlOIEdhPzY3LZJHAMsCODLwvcFpRBDkdc0AlcS04k0fU3i+acMf5iCoPsbxruLPBhwKC/KG9a1MO6O8YfLCcAvd+dK0ctdQTQ4hlIaf+VFqK6wTPnO9VFGP46L6IMYsqIy7LdEuKbxoyzfc/wt42Sco8phrROv7rkRdQ+HihGpz6uMQ0TR2ElvKqshgtezs1FgWy0Tnv/n/1WyRIjP22tHeiyyiqjyHcn/I3lSLgSu8cdN2uw6QnzWAjlX2fIaQf4GEcnwDoWu27wM/4EoaQ5FWu7+VzGfrBtd7M=","head":{"uint32_head_type":2,"c2s_head":{"uint32_sub_msgtype":1297,"xxxx":324012,"uint32_token_type":4,"byte_token_a1":"","uint32_timestamp":1733471713733,"str_sub_business_name":"","platform":{"uint32_sdk_version":20240626,"uint8_client_type":5}}},"extra":{},"body":{"msg_login_req":{"bytes_user_uuid":"7db1bd41-fa32-4804-ad39-6dd3b282dd3f","uint32_sdk_version":20240626,"uint32_client_type":5,"str_userdefine":""}}}]
(4)其他功能。
总的来说支持的功能还是很多的。例如:
a)支持多种数据格式,如:Text、JSON、XML、HTML、Binary等;
b)支持对交互信息进行格式化显示,如:Text、JSON、XML、HTML等;
c)支持对交互数据进行模糊搜索、筛选过滤、清空等操作;
d)交互数据按照时间倒序限制,更便于查看最新数据等。
a)支持多种数据格式。
b)支持对交互信息进行格式化显示
c)支持对交互数据进行模糊搜索、筛选过滤、清空等操作
四、postman其他事项
4.1、postman配置代理
背景:我需要对腾讯云上的产品测试环境进行验证。但是腾讯云访问测试环境是通过地域 + 代理实现的。具体来说在浏览器上我们是通过 配置了 whilstle 借助 google浏览器的 SwitchyOmega 插件代理到 127.0.0.1:8899 。对于postman,我们如果想让请求也发送到从测试环境同样也要配置将请求发送至 127.0.0.1:8899 去。
具体配置方法如下:
(1)右上角齿轮 → Settings →
(2)Proxy → 用户自定义代理配置。
(3)验证效果。
抓取浏览器中的一个请求 → 右键 → copy as cCurl → 粘贴至 postman的http请求处 并 发送。
如下图所示就为访问成功:
如果我们把自定义代理开关关掉,在发送同样的请求。