如何用curl发送POST请求?
- 主机动态
- 2025-06-07
- 10
curl是一个功能强大的命令行工具,用于传输数据,支持多种协议(如HTTP/HTTPS),发送POST请求是它与Web服务器交互的核心功能之一,以下是详细指南:

POST请求基础
核心选项 -d 或 --data:
用于发送表单数据(默认Content-Type: application/x-www-form-urlencoded):
curl -X POST -d "key1=value1&key2=value2" https://api.example.com/endpoint
- -X POST 可省略(-d 隐含POST方法)。
- 数据格式:key=value,多参数用 & 连接。
发送JSON数据
步骤:

- 设置Header:-H "Content-Type: application/json"
- 用-d传递JSON字符串: curl -X POST -H "Content-Type: application/json" -d '{"name":"John", "age":30}' https://api.example.com/users
发送文件内容
方法1:直接读取文件
用符号指定文件路径:

curl -d "@data.json" https://api.example.com/upload
方法2:上传文件(表单形式)
用-F选项(Content-Type: multipart/form-data):
curl -F "file=@/path/to/file.jpg" https://api.example.com/upload
高级用法
添加请求头
curl -H "Authorization: Bearer token" -H "Accept: application/json" ...
调试与日志
- 查看请求详情: curl -v -X POST ... # -v显示详细通信过程
- 保存响应: curl -o response.json ... # 输出到文件
处理重定向
curl -L ... # 自动跟随重定向
常见错误与解决
| 错误场景 | 原因 | 解决方案 |
|---|---|---|
| 400 Bad Request | 数据格式错误 | 检查JSON语法或Content-Type |
| 401 Unauthorized | 缺少认证头 | 添加Authorization头 |
| 405 Method Not Allowed | 未正确指定POST方法 | 显式添加-X POST |
完整示例
示例1:提交登录表单
curl -d "username=admin&password=secret" https://example.com/login
示例2:创建API资源(JSON)
curl -X POST -H "Content-Type: application/json" -H "API-Key: YOUR_KEY" -d '{"title":"New Post", "content":"Hello World"}' https://api.example.com/posts
为何需要POST请求?
- 安全性:数据在请求体中传输(GET请求暴露在URL中)。
- 数据容量:支持发送大量数据(如表单、文件)。
- 兼容性:符合RESTful规范(创建资源需用POST)。
引用说明:
本文参考curl官方文档(https://curl.se/docs/manpage.html)和Mozilla HTTP协议标准(https://developer.mozilla.org/),实践前请确保已安装curl(终端输入curl --version验证)。