07 Apr 2020
官方介绍:“Curl is a command-line tool for transferring data specified with URL syntax”。其实就是一个用来发送URL请求的命令行工具。
参考文档:
-I, --head: 只获取响应的header-H: 发送请求时额外的header,例如:-H "Host: example.com"-X: 指定连接HTTP服务器时的HTTP请求方法,默认是GET。通常情况下,不需要使用这个选项,因为常见的GET,HEAD,POST,PUT等请求有专门的option来调用。这个选项只是更改了HTTP请求中actual word,并没有改变curl的行为,例如,-X HEAD并不能代替-I, --head的功能。--post301, --port302, --port303: 让curl遵循RFC 7231/6.4.2规范,在进行301, 302, 303跳转时,依然不会把POST转换成GET。这个选项必须要和-L, --location选项同时使用。-L, --location: 如果连接的HTTP服务器返回了3XX的重定向返回码,这个选项会让curl在重定向的地址上重新发起请求。如果同时使用了-I, --head,会返回路径上所有的header信息。-d, --data <data>: 将指定的数据在POST请求中发送给HTTP服务器,就像用户在浏览器中填写表单,然后点下发送按钮之后浏览器执行的行为一样。这样的请求使用的content-type是application/x-www-form-urlencoded。和-I, --head, -F, --form, -T, --upload-file这些选项互斥。-E, --cert <certificate[:password]>: 告诉curl在建立TLS连接时,使用什么客户端证书(如果应用程序有使用双向证书认证的话)。--key <key>: 告诉curl在建立TLS连接时,使用什么客户端私钥(如果应用程序有使用双向证书认证的话)。--ciphers <list of ciphers>: 设定在连接中使用什么加密算法。-w, --write-out <format>: 按照指定的格式和变量内容,在curl完成请求后输出。详细变量说明,见curl.se
curl -X post -d "{}" https://something.com HTTP Status 501 – Not Implemented
基于mozilla 501 error docs,501错误是请求的方法不被服务器接受,定睛一看,
post不应该是小写,换成POST就好了
# form 格式 curl -d "param1=value1¶m2=value2" -H "Content-Type: application/x-www-form-urlencoded" -X POST http://localhost:3000/data # json格式 curl -d '{"key1":"value1", "key2":"value2"}' -H "Content-Type: application/json" -X POST http://localhost:3000/data
-w用法使用-w来排查连接的各种时间
curl -o /dev/null -s -w 'time_namelookup: %{time_namelookup}\ntime_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n' https://www.baidu.com
time_namelookup: 0.010346
time_connect: 0.051382
time_starttransfer: 0.251428
time_total: 0.251855