linux下使用curl get请求传递多参数问题

4,033 阅读2分钟

前言

今天在修改完一个预生产环境的缺陷时,我打算测试一下,但是前端还没写完呢,怎么测呢?我打算使用postman测试,但是我也不知道外网ip地址,然后我的同事飞哥告诉我可以使用堡垒机用内网ip测试,使用curl命令。

curl是什么?

利用URL规则在命令行下工作的文件传输工具

curl命令 是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。做网页处理流程和数据检索自动化,curl可以祝一臂之力。

curl的GET请求:

curl http://www.example.com/example?param1=nickwolfe&param2=12345

curl的POST请求:

使用-d选项

curl -d "param2=nickwolfe&param2=12345" http://www.example.com/example
json传参:
curl -i -X POST -H "'Content-type':'application/json'" -d '{"a":"哈哈","b":"嘿嘿"}' http://www.example.com/example/doPost

保存文件

curl -o text.iso http://example.com/text.iso # 指定文件名
或 curl -O http://example.com/text.iso  #默认文件名text.iso
还可以使用重定向符号 > 

实践

因为是get请求,我使用 curl + 地址发起请求,其中内网ip地址是从日志系统找到的,端口是问飞哥,类似下面的命令

curl http://{ip}:{port}/doSomething?a=1&b=2

报了系统异常,告诉我必要参数缺失

Required String parameter 'b' is not present

我测试了一个不需要传参的接口,能够正常获取到数据。

于是我便打开baidu开始搜索: curl get 参数 ,就找到了答案

& 在linux操作系统命令下,会让前面的命令在后台去执行,所以需要使用""将&转义使用,就可以获取到多个参数了。

curl http://{ip}:{port}/doSomething?a=1\&b=2

顺便贴几个相关的常见命令:

当终端进程正在运行时使用Ctrl + z 命令会让命令进入后台并且暂停;

通过jobs命令可以查看当前终端正在运行和暂停的进程;

命令fg可以将后台运行的进程任务放到前台运行;

bg 命令会将任务放置到后台执行,如果任务是暂停状态,也会被启动起来。

参考

在linux下使用curl访问 多参数url GET参数问题