curl 提交数据是什么
curl 提交数据主要靠三组参数:-d 提交表单(默认内容类型为表单编码),搭配 -H 再指定 JSON 类型,-F 走 multipart 上传文件。含特殊字符的数据用 --data-urlencode 做编码,避免请求体被破坏。
基本信息
| 适用平台 | 跨平台,Linux / macOS / Windows 均有官方版本 |
|---|---|
| 命令语法 | curl [-d|-F|--data-urlencode] [选项] URL |
| 常用选项 | -d 数据、-H 头、-F 表单文件、-G 拼查询串、-X 指定方法 |
| 数据来源 | 字符串、@文件读取内容、@- 读标准输入 |
典型使用场景
- 调接口验证:提交 JSON 到业务接口,确认返回与副作用符合预期
- 表单提交:模拟浏览器提交登录或配置表单
- 文件上传:用 -F 走 multipart,等价于网页上传控件
- 查询参数编码:含空格与与号的参数用编码参数避免破坏请求
- 批量调用:配合 shell 循环与静默模式串联成脚本
常用示例
常用示例
curl -sS -d 'name=ops&level=1' https://api.example.com/items
curl -sS -G --data-urlencode 'q=hello world & more' https://api.example.com/search
curl -sS -H 'Content-Type: application/json' -d '{"name": "web01", "port": 8080}' https://api.example.com/items
curl -sS -F 'file=@/tmp/backup.tar.gz' https://api.example.com/upload
curl -sS -X PUT -H 'Content-Type: application/json' -d @body.json https://api.example.com/items/1
curl -sS -o /dev/null -w '%{http_code} %{time_total}\n' -d 'a=1' https://api.example.com/items参数对照
| 参数 | 作用 | 注意 |
|---|---|---|
| -d | 发送数据体并隐含 POST | 不自动编码,空格与与号会破坏表单 |
| --data-urlencode | 对数据做 URL 编码 | 比直接 -d 安全,常配 -G |
| -G | 把数据拼到查询串 | 与编码参数连用最自然 |
| -H | 自定义请求头 | 发 JSON 必须显式声明内容类型 |
| -F | multipart 表单上传 | 文件用 @路径,自动生成边界 |
| @文件 与 @- | 从文件或标准输入读取 | 大数据量可避免命令行过长 |
-d 会自动把请求方法变成 POST,需要 PUT 或 DELETE 时用 -X 显式指定。
静默模式组合是脚本里的推荐写法:关闭进度输出,同时保留错误信息。
提交失败时先看状态码与响应头:加 -i 打印响应头、加 -v 查看完整请求过程,能快速区分是请求构造错误还是服务端拒绝。
表单字段含中文或特殊符号时统一走编码参数,避免服务端收到的值与预期不一致。
JSON 正文在外层用单引号包住最稳,混用引号是 curl 报错的高发区;复杂正文建议写进文件用 @文件 方式提交。