curl是一个命令行访问URL的计算机逻辑语言的工具,发出网络请求,然后得到数据并提取出,显示在标准输出“stdout”上面,可以用它来构造http request报文,curl(CommandLine Uniform Resource Locator),即在命令行中利用URL进行数据或者文件传输
使用 curl
发起 POST 请求非常常见,主要通过 -X POST
指定请求方法,并通常配合 -d
或 --data
选项来发送数据。
以下是几种常用的 curl
发起 POST 请求的方式:
1. 发送表单数据 (application/x-www-form-urlencoded)
这是最常见的 POST 方式,模拟 HTML 表单提交。
curl -X POST https://httpbin.org/post
-d "name=张三&age=25"
你也可以使用 -F
来发送表单字段(会自动设置为 multipart/form-data
):
curl -X POST https://httpbin.org/post
-F "name=李四" -F "age=30"
2. 发送 JSON 数据
需要指定 Content-Type: application/json
。
curl -X POST https://httpbin.org/post
-H "Content-Type: application/json"
-d '{"name": "王五", "age": 28}'
注意: 使用单引号包裹 JSON 字符串可以避免 shell 解析问题。
3. 从文件读取数据
如果数据内容较长,可以将数据写入文件,然后用 @
符号读取:
# 发送 JSON 文件
curl -X POST https://httpbin.org/post
-H "Content-Type: application/json"
-d @data.json
其中 data.json
内容如下:
{"title": "测试", "content": "这是一条测试消息"}
4. 常用选项说明
-X POST
:显式指定请求方法为 POST。-d "data"
:发送数据,会自动设置Content-Type
为application/x-www-form-urlencoded
。-H "Header: Value"
:添加请求头,如Content-Type
。-v
或--verbose
:显示详细过程,便于调试。-i
:显示响应头。--data-urlencode
:对数据进行 URL 编码,适合包含中文等特殊字符。
示例:安全地发送含中文的表单
curl -X POST https://httpbin.org/post
--data-urlencode "message=你好,世界"
--data-urlencode "name=张三"
5. 完整示例:调用 API
假设你要调用一个用户注册接口:
curl -X POST https://api.example.com/register
-H "Content-Type: application/json"
-H "Authorization: Bearer your-token"
-d '{
"username": "user123",
"password": "pass123",
"email": "user@example.com"
}'