直接用curl测接口通不通,关键参数是:-I只取响应头、-o /dev/null -s -w "%{http_code}"静默输出状态码、-m 3 -f超时并自动失败;需注意-I可能fallback到GET,-f不重试易受网络抖动影响。

直接用 curl 就能测,不用装 Postman 或写代码——前提是知道该加哪些参数、什么时候必须加、不加会出什么错。
怎么快速确认接口通不通
只关心「能不能连上、返回是不是 200」,别浪费时间等完整响应体:
-
curl -I http://example.com/health:只拿响应头,快,适合脚本健康检查 -
curl -o /dev/null -s -w "%{http_code}" http://example.com/health:静默执行,只输出状态码(比如200或503),方便 if 判断 -
curl -m 3 -f http://example.com/readyz:超时 3 秒 +-f让非 2xx 状态直接报错,配合 shell 的&&/||很干净
注意:-I 实际发的是 HEAD 请求,有些服务没实现 HEAD,会 fallback 到 GET;而 -f 不会自动重试,网络抖动时可能误判。
POST JSON 数据老是 400,问题出在哪
最常见的不是数据写错了,而是头没设对或引号漏了:
- 必须带
-H "Content-Type: application/json",否则后端当普通表单解析 -
-d后的 JSON 字符串要用单引号包裹('{...}'),避免 shell 把双引号、花括号、$ 符号提前展开 - 如果 JSON 太长,写进文件再用
-d @data.json,比命令行拼接安全 - 加
-v看实际发出的请求头和 body,确认 Content-Length 和换行是否被截断
示例:curl -X POST -H "Content-Type: application/json" -d '{"model":"gpt-4o-mini","messages":[{"role":"user","content":"hi"}]}' https://taotoken.net/api/v1/chat/completions
带认证的请求总被拒,Token 放哪才对
Bearer Token 必须放在 Authorization 请求头里,不是 URL 参数,也不是 -d 里:
- 正确写法:
-H "Authorization: Bearer abc123xyz",注意中间有空格,Bearer大写 - Token 里如果有特殊字符(如
+、/),shell 可能误解析,建议用变量:TOKEN="abc123xyz"; curl -H "Authorization: Bearer $TOKEN" ... - Basic 认证用
-u user:pass更省事,curl自动编码并加头 - 别把 Token 写在命令历史里,执行完立刻清空:
history -d $(history 1)
怎么测响应时间、定位慢在哪
光看 time curl 不够,得拆开看各阶段耗时:
- 用
-w输出细分时间:curl -w "DNS:%{time_namelookup} 连接:%{time_connect} 开始传:%{time_starttransfer} 总:%{time_total}\n" -o /dev/null -s https://api.example.com -
time_starttransfer是关键指标——它到第一个字节的时间,反映后端处理速度;time_total包含下载大响应体的时间,容易误导 - 想批量测,用循环 +
awk统计平均值,但别忘了加-s静默,否则进度条干扰解析 - HTTP/2 协议协商是否成功,看
curl -v输出里有没有* ALPN, offering h2和* Using HTTP/2
真正卡住的地方,往往不是后端,而是 DNS 解析慢、TLS 握手慢、或中间代理转发延迟高——-w 的字段名就是排查线索。


















