curl 测试 http 请求需规范编码、设头、查状态:get 用单引号或 -g --data-urlencode;post json 必加 -h 'content-type: application/json' 并单引号包体;调试必加 -v/-i 和超时;认证推荐 -u,cookie 值需引号;-f 校验状态码。

curl 测试 GET 请求时如何正确传递 URL 和参数
直接在终端敲 curl http://api.example.com/users?id=123 看似简单,但容易因特殊字符(如空格、&、/)被 shell 解析出错或服务端接收异常。URL 中的查询参数必须编码,尤其当值含中文、空格或符号时。
实操建议:
- 用单引号包裹整个 URL:
curl 'http://api.example.com/users?id=123&name=foo%20bar',避免 shell 展开 - 对动态参数用
curl -G --data-urlencode自动生成编码:curl -G 'http://api.example.com/search' --data-urlencode 'q=hello world' --data-urlencode 'page=2' - 避免手动拼接
%20类编码——易错且难维护,交给--data-urlencode更可靠
POST 提交 JSON 数据必须设置 Content-Type 并转义引号
常见错误是只写 curl -X POST -d '{"name":"alice"}' http://api.example.com/users,结果服务端收不到 body 或报 415 Unsupported Media Type。根本原因是缺少 Content-Type: application/json 头,且 shell 对双引号处理不一致。
实操建议:
- 显式加
-H 'Content-Type: application/json',这是 RESTful API 的契约要求 - 用单引号包住 JSON 字符串,避免引号冲突:
curl -X POST -H 'Content-Type: application/json' -d '{"name":"alice","age":30}' http://api.example.com/users - 复杂 JSON 推荐从文件读取:
curl -X POST -H 'Content-Type: application/json' -d @payload.json http://api.example.com/users,省去转义烦恼
调试响应头、状态码和超时必须加 -v 或 -I,不能只看 body
仅靠 curl http://... 输出 body 容易误判:返回 200 但实际是 302 重定向;body 为空但状态码是 401;响应耗时 8 秒却以为“很快”。没有头信息和状态码,等于盲测。
实操建议:
- 加
-v查看完整请求/响应过程(含头、状态行、重定向链):curl -v https://api.example.com/status - 只查状态码和头用
-I(HEAD 请求):curl -I https://api.example.com/health - 强制超时防卡死:
curl --connect-timeout 5 --max-time 10 ...,避免脚本挂起 - 用
-w输出性能指标:curl -s -o /dev/null -w 'time=%{time_total}s\n' https://api.example.com/test
带认证、Cookie 或自定义 Header 的常见坑
Bearer Token 写成 -H 'Authorization: Bearer xxx' 是对的,但很多人漏掉空格或大小写错误(如 authorization 小写);Cookie 值含分号或等号时未引号包裹,导致截断;-H 参数顺序无关,但多个 -H 必须各自独立。
实操建议:
- Token 认证务必空格分隔:
-H 'Authorization: Bearer eyJhbGciOi...',不是Bearer:xxx或token:xxx - Cookie 值用单引号并注意分号:
-H 'Cookie: sessionid=abc123; Path=/; HttpOnly' - Basic Auth 更推荐用
-u user:pass,curl 自动编码和设头,比手写Authorization: Basic ...不易出错 - 调试时加
--include同时显示头和 body,比默认行为信息更全
-f 参数能让 curl 遇到非 2xx 状态码直接报错退出,配合 shell 脚本做自动化检查时很关键。大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











