用途
curl 是一个命令行 HTTP 客户端工具,用于发起 HTTP 请求和传输数据。它适合在终端中直接调用 API、测试接口、下载或上传文件,以及编写自动化脚本。
主要能力
基础请求
- GET 请求:直接使用
curl https://api.example.com。 - 保存输出:
-o output.html指定文件名,-O使用远程文件名。 - 跟随重定向:
-L。 - 显示响应头:
-i包含响应头,-I仅显示响应头。 - 详细输出:
-v用于调试。
POST 及其他方法
- POST 表单数据:
-X POST -d "name=John&email=john@example.com"。 - POST JSON:配合
-H "Content-Type: application/json"和-d '{"name":"John"}'。 - 从文件读取数据:
-d @data.json。 - 表单上传:
-F "file=@document.pdf"。 - 其他方法:PUT、DELETE、PATCH 通过
-X指定。
请求头与认证
- 自定义请求头:
-H "User-Agent: MyApp/1.0",可多次使用。 - Basic 认证:
-u username:password。 - Bearer Token:
-H "Authorization: Bearer YOUR_TOKEN"。 - API Key:可放在请求头或 URL 参数中。
高级功能
- 超时与重试:
--connect-timeout、--max-time、--retry、--retry-delay。 - Cookie:
-b发送,-c保存,可同时使用。 - 代理:
-x指定 HTTP 代理,--socks5指定 SOCKS 代理,-U代理认证。 - SSL/TLS:
-k忽略证书错误,--tlsv1.2指定版本,--cert和--key使用客户端证书。
响应处理
- 静默模式:
-s不显示进度条。 - 仅显示状态码:
-s -o /dev/null -w "%{http_code}"。 - 自定义输出格式:
-w可输出时间、状态码等。 - 美化 JSON:配合
jq使用。 - 范围请求:
-r 0-1000下载指定字节范围,-C -断点续传。
文件操作
- 下载:
-O或-o,支持多个文件、断点续传。 - 上传:FTP 使用
-T,HTTP PUT 使用-T,表单上传使用-F。
测试与调试
- API 测试:直接对 REST 接口发起 GET、POST、PUT、DELETE 请求。
- 性能测试:
-w输出 DNS、连接、TLS、传输、总时间等指标。 - 调试:
-v显示请求与响应头,--trace-ascii记录跟踪日志。
使用方式
在终端中直接输入 curl 命令,可组合多个选项。常用标志包括:-X 指定方法,-d 发送数据,-H 自定义头,-o/-O 输出文件,-L 跟随重定向,-i/-I 显示头,-v 详细输出,-s 静默,-S 静默但显示错误,-f HTTP 错误时静默失败,-k 忽略 SSL,-u Basic 认证,-F 多部分表单,-b/-c Cookie,-w 自定义输出格式。
适用场景
- 快速测试 REST API 接口。
- 在脚本中调用 HTTP 服务。
- 下载或上传文件。
- 调试网络请求与 SSL 握手。
- 测量请求各阶段耗时。
限制
- 官方文档:https://curl.se/docs/,手册:
man curl。 - 其他平台、收费、价格等信息暂未提供。