在 Linux 下,curl 是最常用的命令行 HTTP 请求工具,可以方便地发送 POST 请求。下面给你一个超详细的总结(新手友好):


1. 基本语法

curl -X POST <URL> -d "<参数>"

  • -X POST → 指定请求方法为 POST(其实 -d 默认就是 POST,可以省略)。
  • -d → 表示请求体数据。

2. 发送表单数据(application/x-www-form-urlencoded)

curl -X POST http://example.com/login \
-d "username=jack" \
-d "password=123456"

等价于浏览器表单提交:

username=jack&password=123456


3. 发送 JSON 数据(application/json)

常见于 REST API:

curl -X POST http://example.com/api/login \
-H "Content-Type: application/json" \
-d '{"username":"jack","password":"123456"}'

  • -H 添加请求头。
  • -d 里的 JSON 必须用单引号 ' 包裹(避免 Bash 转义问题)。

4. 从文件读取 POST 数据

比如有一个 JSON 文件 data.json

{
  "username": "jack",
  "password": "123456"
}

命令:

curl -X POST http://example.com/api/login \
-H "Content-Type: application/json" \
-d @data.json

  • @filename → 直接把文件内容作为请求体。

5. 携带自定义请求头

curl -X POST http://example.com/api/data \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"key":"value"}'


6. 上传文件(multipart/form-data)

curl -X POST http://example.com/upload \
-F "file=@/path/to/file.txt" \
-F "desc=测试文件"

  • -F 表示表单上传(含文件)。

7. 调试请求

curl -v -X POST http://example.com/api \
-d "test=123"

  • -v → 显示详细的请求和响应过程。
  • -i → 显示响应头。

✅ 总结:

  • 表单数据:-d "a=1&b=2"
  • JSON:-H "Content-Type: application/json" -d '{"a":1}'
  • 文件上传:-F "file=@xxx.txt"
  • 文件作为请求体:-d @file.json

我帮你整理了一份 《Linux curl POST 请求速查表》PDF,涵盖了表单、JSON、文件上传、请求头等常见用法。

📄 点击下载 PDF

要不要我再做一份 curl GET/PUT/DELETE 的完整命令合集速查表