curl 常用参数:接口自测与下载
发布时间:2026-02-07 15:20       
更新时间:2026-02-08 08:53
接口部署完想先自测一把,不必打开浏览器,curl 就在服务器上。下面按四个常见场景给出参数组合,命令在 CentOS、Ubuntu 默认环境可直接执行。
## 场景一:只看响应头
```
curl -I https://www.soonyun.com
```
-I 发 HEAD 请求,返回 HTTP 状态码、Server、Content-Type、缓存相关头。检查跳转时再加 -L,跟随 301/302 走到底,最后一跳的状态码才是最终结果。自测跳转链路时 -IL 两个参数连用,能把每一跳的响应头都打出来,排查重写规则很直观。
## 场景二:静默下载与保存
```
curl -s -o page.html https://www.soonyun.com
```
-s 关掉进度条,脚本里避免刷屏;-o 指定保存文件名。配合 -f 使用,HTTP 错误(404、500)时返回非零退出码,脚本判断才可靠。下载大文件断线了,加 -C - 从断点续传;表单上传用 -F file=@pkg.zip,文件名前的 @ 不能少,相当于浏览器里的表单提交。
## 场景三:带头部与请求体的接口测试
```
curl -s -X POST https://api.example.com/v1/login \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer eyJhbGci...' \
-d '{"user":"test","pass":"123"}'
```
-H 加请求头,-d 带请求体,默认按 POST 处理。调试时加 -v 能看到完整请求与响应过程,包括 TLS 握手阶段。
## 场景四:测耗时与状态码
排查"接口慢"时,用 -w 把各阶段耗时格式化输出:
```
curl -s -o /dev/null -w '%{time_namelookup} %{time_connect} %{time_appconnect} %{time_total}\n' https://www.soonyun.com
```
四项分别对应域名解析、TCP 连接、TLS 握手、整体耗时:dns 高查解析记录,connect 高查网络链路,tls 高查证书链配置,total 减去前三项大致是服务端处理时间,一套跑下来,慢在解析、网络还是服务端,当场定责。健康检查脚本里则取状态码:
```
code=$(curl -s -o /dev/null -w '%{http_code}' --connect-timeout 3 --max-time 10 https://www.soonyun.com)
[ "$code" = 200 ] || echo "接口异常: $code"
```
脚本里务必设超时,--connect-timeout 管连接阶段,--max-time 管整体,不设的话对端卡住会把整个脚本挂住。健康检查的超时给足余量:接口正常一两百毫秒响应,超时放到三到十秒比较合适。
常见报错:证书告警加 -k 可以绕过,但只用于测试环境排查,别写进脚本。把这四段存成别名或脚本,接口自测就是一条命令的事。遇到跨域或签名类问题,先用 -v 看请求头,再对照接口文档核对。