常用选项
-#, --progress-bar
让 curl 显示简单的进度条,而不是更详细的标准计量器。
-b, --cookie <名称=数据>
在请求中附带 cookie。如果没有 =
,则指定要使用的 cookie 文件(见 -c
)。
-c, --cookie-jar <文件名>
保存响应 cookies 到这个文件。
-d, --data <数据>
在 POST 请求中发送指定的数据。详情如下所述。
-f, --fail
静默失败(如果返回,不输出 HTML 错误表格)。
-F, --form <名称=内容>
提交表单数据。
-H, --header <头部>
附带请求的头部信息。
-i, --include
在输出中包括 HTTP 头部。
-I, --head
仅抓取头部信息。
-k, --insecure
允许不安全的连接成功。
-L, --location
跟随重定向。
-o, --output <文件>
将输出写入 <文件>
。可以与此同时使用 --create-dirs
来创建在 -o
路径中指定的任何目录。
-O, --remote-name
将输出写入一个像远程文件命名的文件(只写入当前目录)。
-s, --silent
静默(安静)模式。使用 -S
可以强制显示错误。
-v, --verbose
提供更多信息(用于调试)。
-w, --write-out <格式>
在完成传输后,让 curl 在 stdout 上显示信息。查看 man 页面了解更多关于可用变量的详情。快速强制 curl 在输出后添加换行符的方法: -w "\n"
(可以添加到 ~/.curlrc
)。
-X, --request
使用的请求方法。
POST 请求
通过 POST 或 PUT 请求发送数据时,两种常见的格式(通过 Content-Type
头部指定)分别是:
application/json
application/x-www-form-urlencoded
许多 API 都接受这两种格式,所以如果您在命令行使用 curl
,就可以比较容易地使用 form urlencoded 格式,而不是 json,因为:
- json 格式需要很多额外的引号
- curl 默认会发送 form urlencoded 格式的数据,所以对于 json 必须显式设置
Content-Type
头部
本文档提供了使用这两种格式的示例,包括如何在 curl
请求中使用这两种格式的示例数据文件。
curl 的使用
在 POST 和 PUT 请求中发送数据时,这些是常见的 curl
选项:
请求类型
-X POST
-X PUT
内容类型头部
-H "Content-Type: application/x-www-form-urlencoded"
-H "Content-Type: application/json"
数据
- form urlencoded:
-d "param1=value1¶m2=value2"
或-d @data.txt
- json:
-d '{"key1":"value1", "key2":"value2"}'
或-d @data.json
- form urlencoded:
示例
POST application/x-www-form-urlencoded
application/x-www-form-urlencoded
是默认格式:
curl -d "param1=value1¶m2=value2" -X POST http://localhost:3000/data
明确指定:
curl -d "param1=value1¶m2=value2" -H "Content-Type: application/x-www-form-urlencoded" -X POST http://localhost:3000/data
使用数据文件
curl -d "@data.txt" -X POST http://localhost:3000/data
POST application/json
curl -d '{"key1":"value1", "key2":"value2"}' -H "Content-Type: application/json" -X POST http://localhost:3000/data
使用数据文件
curl -d "@data.json" -X POST http://localhost:3000/data