本文详细介绍如何利用curl和wget命令行工具模拟HTTP接口请求测试,包含GET/POST请求构造、Header设置、参数传递等实战技巧,以及JSON数据交互和结果验证方法,帮助开发者快速进行API调试和自动化测试。
一、为什么要使用命令行工具测试接口?
在API开发和测试过程中,curl和wget作为轻量级命令行工具,相比图形化工具具有以下优势:
- 无需安装复杂IDE或测试软件
- 适合自动化测试和持续集成场景
- 可精确控制请求头和请求体
- 支持所有主流HTTP协议方法
- 结果可直接输出或重定向到文件
二、curl基础用法
1. GET请求示例
基本GET请求
curl https://api.example.com/users
带查询参数的GET请求
curl "https://api.example.com/search?keyword=test&page=1"
显示详细请求信息(-v选项)
curl -v https://api.example.com/status
2. POST请求示例
发送表单数据
curl -X POST -d "username=admin&password=123456" https://api.example.com/login
发送JSON数据
curl -X POST -H "Content-Type: application/json"
-d '{"username":"admin","password":"123456"}'
https://api.example.com/login
3. 设置请求头
curl -H "Authorization: Bearer token123"
-H "X-Custom-Header: value"
https://api.example.com/protected
三、wget实用技巧
wget虽然主要用于文件下载,但同样支持API测试:
基本GET请求
wget -qO- https://api.example.com/users
带认证的POST请求
wget --post-data="user=test&pass=123"
--header="Content-Type: application/x-www-form-urlencoded"
-O response.json
https://api.example.com/auth
四、高级测试场景
1. 测试文件上传
curl -X POST -F "file=@test.jpg"
-F "meta={"name":"test file"};type=application/json"
https://api.example.com/upload
2. 处理HTTPS和证书
跳过SSL证书验证(测试环境使用)
curl -k https://api.example.com
指定客户端证书
curl --cert client.pem --key key.pem https://api.example.com
3. 结果处理和验证
检查HTTP状态码
curl -o /dev/null -s -w "%{http_code}n" https://api.example.com
提取特定响应头
curl -I -s https://api.example.com | grep -i "content-type"
与jq配合处理JSON响应
curl -s https://api.example.com/users | jq '.data[0].username'
五、自动化测试实践
将curl命令集成到Shell脚本中实现自动化测试:
!/bin/bash
API_URL="https://api.example.com"
AUTH_TOKEN=$(curl -s -X POST -d "user=admin&pass=123" "$API_URL/login" | jq -r '.token')
测试获取用户列表
response=$(curl -s -H "Authorization: Bearer $AUTH_TOKEN" "$API_URL/users")
if [ $(echo "$response" | jq '. | length') -gt 0 ]; then
echo "测试通过:成功获取用户列表"
else
echo "测试失败:空响应"
exit 1
fi
六、curl与wget的选择建议
比较项 | curl | wget |
---|---|---|
协议支持 | 更广泛(支持SFTP等) | 主要HTTP/HTTPS/FTP |
交互模式 | 更适合API测试 | 更适合文件下载 |
输出处理 | 直接输出到stdout | 默认保存到文件 |
通过本文介绍的各种技巧,开发者可以高效使用curl和wget进行API接口测试。这些方法特别适合在服务器环境、CI/CD流水线等无GUI场景下快速验证接口功能。
评论