curl 学习记录

curl 可以发送各种http请求。是一个在linux下强大的命令。之前大多数情况测试接口,我都是依赖于python脚本,用requests库发送请求。在了解到curl命令后,简单学习记录了下。

在帮助信息中可以查到很多有用的信息。比如-d选项可以加上post请求的数据。

练习了get请求和post请求的两个常用请求。

用python的flask框架简单写了一个web服务,放在自己的虚拟机上。

代码如下:

  • GET 请求:

在python代码中不需要指定请求方式,默认为get请求。一般来说,参数都是以params的形式拼接在url后面,那么在python中获取这个参数的方法为:

request.args.get("参数名")

curl 发送请求时,只需要在url后拼接相应的参数即可:

curl http://centos121:5005/test_get?name=jeet

请求效果如下:

--silent:可以看到,curl会把很多信息都打印出来,如果不需要这些信息,只需要返回结果,可以加--silent参数。重新请求:

  • POST 请求:

在flask中需要指定 methods=['POST'],以此声明请求方式为post。post请求中也可以存在params的参数,和get请求取参传参相同。post还可以提交json结构的参数,在flask中取参方式为:

# 该方法会返回传入的json体,结果为dict字典
request.json

在curl中传参方式为:

curl http://centos121:5005/test_post?name=jeet -H 'Content-Type:application/json' -d '{"data": "post test data"}' --silent

-H:声明请求头,要传json结构的数据,需要将请求头设置为 Content-Type:application/json,若不设置的话,则默认为application/x-www-form-urlencoded

-d:发送post请求的数据,curl会自动加-X POST,不需要再手动加,后面接具体的数据即可。

请求效果:

如果想在post请求体中写中文,目前我没学会如何进行手动转码,可以采取另一种方式,将json体写入一个文件内,然后提交文件内容即可:

curl http://centos121:5005/test_post -H 'Content-Type:application/json' -d @params.json

另外,如果有多个参数需要在url后面拼接多个参数,正常的是 param1=1&param2=2,但是在shell脚本中,&是有特殊含义的,以daemon运行。所以想要拼多个参数,要对&符号进行转义,在前面加一个反斜杠:\&。或者直接将url和带有&符号的部分用引号引起来,作为一个变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值