curl发送POST⽅法类型带body参数请求以及发送上传⽂件请
curl是什么命令
curl在实际中会被postman等替代,但是他仍然是⼀个快速的模拟http请求的⼯具,⽽且也有他不可替代的理由,使⽤简单,在命令⾏下就可以完成。
今天不是介绍如何使⽤curl模拟各种GET/POST/PUT/DELETE请求的,⽽是介绍如何模拟post请求带body参数,以及模拟上传⽂件。起因是笔者在⼀次使⽤curl模拟POST请求带body参数的时候,出现了⼀个问题,参数能够传给后台,但是后台接收的参数总是会在参数字符串后⾯增加⼀个“=”字符,这个令我很诧异,如是就想着研究⼀下,如何模拟⼀个POST类型带body参数的HTTP请求,并且参数不会被增加“=”号。
我们准备⼀个简单的服务端,提供两个接⼝,⼀个是保存save(@RequestBody String name)接⼝,打印name,并返回name,这个⽤来处理body参数的⼀个接⼝,⽅法签名是POST,另⼀个⽅法是upload(@RequestParam("file")MultipartFile file,HttpServletRequest request),⽤来测试⽂件上传的。
启动项⽬,我们测试第⼀个接⼝save(name),模拟带body参数:
curl -XPOST -d hello localhost:9090/save
我们需要添加请求头参数,修改Content-Type属性 -H "Content-Type: application/json"
模拟发送body参数请求成功,⽽且也解决了参数尾部会增加“=”的问题。
另外,除了直接在命令⾏⾥直接输⼊body参数之外,我们可以通过指定⼀个⽂件的内容作为参数body的内容,也是可以的,我们通过-T选项指定⽂件。
curl -XPOST - localhost:9090/save
通过指定⽂件为body参数,就不⽤指定请求头参数了。
///\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
测试⽂件上传,curl提供⼀个-F参数选项⽤来做⽂件上传,但是-F参数的格式尤其需要注意,⽐如-F
"file=@c:\Users\Administrator\",其中参数中的“@”字符很关键,如果没有字符“@”我们的⽂件依旧⽆法上传。
错误的⽂件上传:
状态码400表⽰参数错误,失败信息显⽰请求所需的file不存在。
正确的⽂件上传:
总结⼀下就是,发送POST请求,可以通过指定请求头类型Content-Type来解决body参数尾部会增加“=”的问题。⽂件上传,我们使⽤-F选项,选项中的字符“@”是必须的,表⽰是⽂件位置前缀。

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