curl 命令实战:从接口调试到文件下载

举报
yd_282444815 发表于 2026/11/05 02:07:07 2026/11/05
【摘要】 curl 是 Linux 和 macOS 系统自带的命令行 HTTP 客户端。在服务器上没有图形界面的场景里,它就是调试接口、下载文件、验证网络连通性的瑞士军刀。掌握下面这些常用参数,就能覆盖日常 90% 的需求。 一、发起最简单的请求默认就是 GET 请求,直接输出响应体:curl https://api.example.com/health想顺带看响应头,加上 -i;想看 DNS 解析、...

curl 是 Linux 和 macOS 系统自带的命令行 HTTP 客户端。在服务器上没有图形界面的场景里,它就是调试接口、下载文件、验证网络连通性的瑞士军刀。掌握下面这些常用参数,就能覆盖日常 90% 的需求。

一、发起最简单的请求

默认就是 GET 请求,直接输出响应体:

curl https://api.example.com/health

想顺带看响应头,加上 -i;想看 DNS 解析、TLS 握手、请求头和响应头的完整交互过程,加上 -v,这是排查网络问题时的调试利器。

二、把响应保存成文件

curl -o result.json https://api.example.com/data

-o 指定保存的文件名;-O(大写)则直接使用 URL 最后一部分作为文件名,下载文件时很方便。

三、发送 POST 请求

curl -X POST https://api.example.com/users \
  -H "Content-Type: application/json" \
  -d '{"name":"zhangsan","age":18}'

-X 指定请求方法,-H 添加请求头,-d 发送请求体。注意用单引号包裹 JSON,避免 shell 解析里面的双引号。

上传文件则用 -F,以 multipart/form-data 格式提交:

curl -X POST https://api.example.com/upload \
  -F "file=@/tmp/a.png" -F "desc=头像"

@ 后面跟本地文件路径即可。

四、调试接口的几个实用参数

  • -L:跟随重定向,很多短链接和登录跳转都依赖它。
  • --max-time 10:设置超时上限,避免请求一直 hang 住。
  • -w:自定义输出格式,只看关键指标,例如统计耗时和状态码:
curl -o /dev/null -s -w "耗时:%{time_total}s 状态码:%{http_code}\n" https://example.com
  • -k:跳过证书校验,仅限内网自签证书调试时使用,生产环境慎用。

五、下载大文件:断点续传

curl -C - -O https://example.com/big.iso

-C - 支持断点续传,下载被中断后可以接着下。配合 --retry 3,失败时还能自动重试几次。

六、几个容易踩的坑

  1. URL 里有 &、? 等特殊字符时,用双引号把整个 URL 包起来,否则 shell 会截断。
  2. -d 默认发送 Content-Type: application/x-www-form-urlencoded,传 JSON 时务必手动加 -H 声明。
  3. 写生产脚本时加上 --fail,让 4xx/5xx 返回非零退出码,方便监控和告警捕获失败。

结语

curl 看似简单,但把 -v、-w、-L、--max-time 这些参数用熟,排查线上问题会快很多。建议把常用的请求保存成 shell 脚本沉淀下来,下次直接复用。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。