bash
1.get请求
curl http://127.0.0.1:9088/api/data
携带token
curl -H 'Authorization:eyJhbGciOiJIU' http://127.0.0.1:9088/api/getTrend
# 带查询参数的 GET 请求
curl "http://127.0.0.1:9088/api/search?q=keyword&page=1"
2.保存响应到文件
curl -o response.json http://127.0.0.1:9088/api/data
说明:-o 指定文件名,适合下载 JSON 或文件。若需保留原始文件名可使用 -O。
3.查看详细通信过程
curl -v http://127.0.0.1:9088/api/data
说明:-v 会显示请求头、响应头、SSL 握手等详细信息,便于排查网络或协议问题。
4.发送表单数据 (application/x-www-form-urlencoded)
curl -X POST -d "username=admin&password=123456" http://127.0.0.1:9088/api/data
5.发送 JSON 数据 (application/json)
curl -X POST -H "Content-Type: application/json" -d '{"name": "John", "age": 30}' http://127.0.0.1:9088/api/data
# 从文件读取 JSON 数据发送
curl -X POST -H "Content-Type: application/json" -d @request.json http://127.0.0.1:9088/api/users
6.上传文件 (multipart/form-data)
curl -X POST -F "file=@/path/to/local/file.txt" -F "description=Test Upload" http://127.0.0.1:9088/api/upload
# 上传文件并附带其他表单字段
curl -F "file=@/var/log/app/error.log" -F "env=production" -H "Authorization: Bearer YOUR_TOKEN" http://127.0.0.1:9088/api/upload
# 上传多个文件
curl -F "file1=@image.png" -F "file2=@document.pdf" http://127.0.0.1:9088/api/batch
7.PUT 更新资源
curl -X PUT -H "Content-Type: application/json" -d '{"status": "active"}' http://127.0.0.1:9088/api/users/101
# 部分更新(PATCH)
curl -X PATCH -H "Content-Type: application/json" -d '{"age":31}' http://127.0.0.1:9088/api/users/123
8.DELETE 删除资源
curl -X DELETE http://127.0.0.1:9088/api/users/101
带认证的删除
curl -X DELETE -H "Authorization: Bearer YOUR_TOKEN" http://127.0.0.1:9088/api/users/123
9.Basic 认证
curl -u username:password http://127.0.0.1:9088/api/protected
说明:-u 会自动将用户名密码进行 Base64 编码并添加到 Authorization 头中。
10.Bearer Token 认证 (OAuth 2.0/JWT)
curl -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5..." http://127.0.0.1:9088/api/secure-data
11.跳过 SSL 证书验证
curl -k http://127.0.0.1:9088/api
说明:-k (或 --insecure) 忽略证书错误,生产环境严禁使用,应使用 --cacert 指定可信 CA 证书。
12.设置超时时间
curl --connect-timeout 5 --max-time 10 http://127.0.0.1:9088/api/slow
说明:--connect-timeout 控制连接建立超时,--max-time 控制整个请求过程超时,防止脚本卡死。
13.自定义 User-Agent
curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" http://127.0.0.1:9088/api
说明:某些接口会拦截非浏览器请求,模拟 UA 可绕过简单限制。
14.并发压力测试
seq 1 100 | xargs -n1 -P10 curl -s -o /dev/null -w "%{time_total}\n" http://127.0.0.1:9088/test
说明:利用 xargs 并行发起 10 个请求,共 100 次,输出每次请求的耗时,用于简易性能评估。
15.常用参数
-X --request 指定 HTTP 方法 (GET, POST, PUT, DELETE)
-H --header 添加请求头 (如 Content-Type, Authorization)
-d --data 发送请求体数据 (POST/PUT)
-o --output 将响应保存到指定文件
-v --verbose 显示详细通信日志
-s --silent 静默模式,不显示进度条和错误信息
-L --location 跟随重定向
-k --insecure 忽略 SSL 证书验证
-u --user 提供基本认证的用户名和密码
-F --form 模拟表单提交,支持文件上传
16.文件下载接口
# 下载文件并保留原文件名
curl -O http://127.0.0.1:9088/api/data.tar.gz
# 下载文件并指定保存文件名
curl -o backup.zip http://127.0.0.1:9088/api/data.zip
# 断点续传
curl -C - -O http://127.0.0.1:9088/api/largefile.iso
# 限速下载(限制为 1M/s)
curl -O http://127.0.0.1:9088/api/data.tar.gz --limit-rate 1M
17.Cookie 处理接口
# 直接发送 Cookie 字符串
curl -b "sessionid=abc123;user=john" http://127.0.0.1:9088/api/userinfo
18.健康检查 / 监控接口
# 获取 HTTP 状态码(输出 200 表示正常)
curl -s -o /dev/null -w "%{http_code}" https://your-service.com/health
# 获取状态码 + 响应时间
curl -o /dev/null -s -w "%{http_code} %{time_total}\n" http://127.0.0.1:9088/api
# 批量监控多个服务
#!/bin/bash
URLS=("https://example.com" "http://127.0.0.1:9088/api/health")
for url in "${URLS[@]}"; do
status=$(curl -s -o /dev/null -w "%{http_code}" $url)
[ "$status" -ne 200 ] && echo "服务中断: $url (状态码: $status)"
done