curl命令发送post请求带参数使⽤curl命令发送POST请求的⼏种⽅式
HTTP 的 POST 请求通常是⽤于提交数据,可以通过这篇⽂章来了解各种提交⽅式:。做 Web 后端开发时,不可避免地要⾃⼰给⾃⼰发请求来调试接⼝,这⾥要记录的内容是如何使⽤命令⾏⼯具 curl 来进⾏各种⽅式的 POST 请求。
1、application/x-www-form-urlencoded
最常见的⼀种 POST 请求,⽤ curl 发起这种请求也很简单。
curl localhost:3000/api/basic -X POST -d 'hello=world'
2、multipart/form-data
这种请求⼀般涉及到⽂件上传。后端对这种类型请求的处理也复杂⼀些。
curl localhost:3000/api/multipart -F raw=@raw.data -F hello=world
3、application/json
json格式的post请求,这种请求也很常见
curl localhost:3000/api/json -X POST -d '{"hello": "world"}' --header "Content-Type: application/json"
跟发起 application/x-www-form-urlencoded 类型的 POST 请求类似,-d 参数值是 JSON 字符串,并且多了⼀个 Content-Type: application/json 指定发送内容的格式。
这个例⼦和 application/x-www-form-urlencoded 中的例⼦发起的请求,到了 Web 后端经过解析后,得到的结果都是 hello: world 键值对。
4、⽂件内容作为要提交的数据
如果要提交的数据不像前⾯例⼦中只有⼀个 hello: world 键值对,数据⽐较多,都写在命令⾏⾥很不⽅便,也容易出错,那么可以把数据内容先写到⽂件⾥,通过 -d @filename 的⽅式来提交数据。这是 -d 参数的⼀种使⽤⽅式,所以前⾯⽤到 -d 参数的地⽅都可以这样⽤。
实际上就是把 -d 参数值写在命令⾏⾥,变成了写在⽂件⾥。跟 multipart/form-data 中上传⽂件的 POST ⽅式不是⼀回事。@ 符号表明后⾯跟的是⽂件名,要读取这个⽂件的内容作为 -d 的参数。
例如,有⼀个 JSON ⽂件 data.json 内容如下:
{
"hello": "world",
"xxx": "yyy",
"a": ["ooo", "mmm"]
}
就可以通过
curl localhost:3000/api/json -X POST -d @data.json --header "Content-Type: application/json"
来提交数据。
如果要⽤ application/x-www-form-urlencoded ⽅式提交,后端解析出来同样的数据,那么 -d 的参数是这样的(注意数组参数的写法)
hello=world&xxx=yyy&a[]=ooo&a[]=mmm
把这个字符串直接作为 -d 的参数或者把它写到⽂件 然后通过 -d @ 的⽅式,发起 POST 请求,⾏为和结果是⼀样的。
curl localhost:3000/api/basic -X POST -d 'hello=world&xxx=yyy&a[]=ooo&a[]=mmm'
curl localhost:3000/api/basic -X POST -d @

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。