curl 命令模拟POST/GET请求¶
发送GET请求
请求格式:
curl http://ip:port/url?args=xxx&args1=xxxx发送POST请求
请求格式:
curl -H 请求头 -d 请求体 -X POST http://ip:port/url参数说明:
-H (或者 --header):请求头,格式:
“Content-Type: application/json”-d:POST内容,格式:{"name":"abc","passwd":"aaa123"}或者"name=abc&passwd=aaa123"
-X:请求协议,格式:POST、GET、DELETE、PUSH、PUT、OPTIONS、HEAD
示例:
application/x-www-form-urlencoded
最常见的一种 POST 请求,用 curl 发起这种请求也很简单
$ curl -X POST -d "user=admin&passwd=abcd" http://127.0.0.1:8000/loginapplication/json
跟发起
application/x-www-form-urlencoded类型的 POST 请求类似,-d 参数值是JSON 字符串,并且多了一个Content-Type: application/json指定发送内容的格式。$ curl -H "Content-Type: application/json" -X POST -d '{"name": "admin", "passwd":"abcd"}' http://127.0.0.1:8000/login
multipart/form-data
这种请求一般涉及到文件上传。后端对这种类型请求的处理也复杂一些。
$ curl -F raw=@raw.data -F name=admin http://127.0.0.1:8000/login
把文件内容作为要提交的数据
如果要提交的数据不像前面例子中只有一个
name: admin键值对,数据比较多,都写在命令行里很不方便,也容易出错,那么可以把数据内容先写到文件里,通过-d @filename的方式来提交数据。这是-d参数的一种使用方式,所以前面用到-d参数的地方都可以这样用。 实际上就是把-d参数值写在命令行里,变成了写在文件里。跟multipart/form-data中上传文件的POST方式不是一回事。@符号表明后面跟的是文件名,要读取这个文件的内容作为-d的参数。data.json文件内容:{ "name":"admin", "passwd":"abcd" }
请求方式:
$ curl -H "Content-Type: application/json" -X POST -d @data.json http://127.0.0.1:8000/login