使用curl进行Http接口请求
需求场景
在日常测试工作中,偶尔需要在命令行中进行请求参数,我遇到的测试场景:
限制在服务器中访问的http接口
一般是用于手动触发定时任务代码, 可以提前得知测试结果.而这种接口为了安全考虑,往往会禁止外部访问,只能内部使用linux命令请求
快速测试mock接口
为了测试mock的接口,服务器能否正常访问,直接在服务器进行接口请求
上述场景目前不存在太复杂的接口请求, 本文仅记录curl的简单用法
基本概念
curl, 即 Client URL工具, 用于在命令行进行web服务器请求;
Window Command 及 Linux Terminal 均可使用
功能强大,Postman能做的请求,curl均可实现
但实际运用上, 代码敲得太累而且不能保存请求重复使用,只用于简单接口临时测试
实战
增删改查
curl -X ${大写的请求方法} ${请求url}
$ curl -X POST https://mock.presstime.cn/mock/62a0476b1a23490028bcb5ef/test/test
$ curl -X DELETE https://mock.presstime.cn/mock/62a0476b1a23490028bcb5ef/test/test
$ curl -X PUT https://mock.presstime.cn/mock/62a0476b1a23490028bcb5ef/test/ticket_status
$ curl -X GET https://mock.presstime.cn/mock/62a0476b1a23490028bcb5ef/test/test
传递请求头及负载
curl -d $payload -H $req_header -X ${大写的请求方法} ${请求url}
需要注意的是请求数据形式一定要与请求头Content-Type一致
(而Postman中会根据你的数据类型自动变更请求头)
$ curl -d '{"org_code":"test","user_name":"superadmin","password":"test","is_home_page":false}' -H 'Content-Type: application/json' -X POST https://mock.presstime.cn/mock/api/authorize/v2/token/
下载文件
curl -O $download_url
相当于linux的wget, 通过链接下载文件并且显示下载进度,
在下载一些面向linux的下载链接时(如mermaid), 这个命令很有用
$ curl -O https://unpkg.com/browse/mermaid@9.0.0/dist/mermaid.min.js
>>
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 11.7M 0 11.7M 0 0 1120k 0 --:--:-- 0:00:10 --:--:-- 1840k
使用总结
优点:
- 命令行可使用,操作系统自带
- 可方便的整合在代码中
缺点
- 无法重复使用接口信息
- 无请求填写辅助功能
- 复制粘贴麻烦
总结
特殊场景使用,日常接口测试还是得Postman