携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情
curl与python都是实现网络请求的便捷工具,但当环境受限或者想要通过linux环境进行自动化时,虽然python在这方面逐步追赶,但curl语句目前依旧是首选,结合shell脚本,能够很方便的执行自动化命令。
这里通过对比的方式,向大家分享curl语句的用法,其中python选用requests库来发送请求,请求的内容是上篇说到的httpbin.org网站。
请求头与GET请求
python中通过headers’来控制请求头
headers = {
'Date': '20220822'
}
response = requests.request("GET", url, headers=headers)
curl使用 -H进行,名称与值之间不需要多加引号
curl -H "Date:20220823" http://127.0.0.1:8001/get 结果如下:
简单POST请求
在python的requests库中,将请求参数换为POST即可实现POST请求,在curl中,通过-X参数来控制请求方法
curl -X POST -H "Date:20220823" http://127.0.0.1:8001/post
结果如下:
带表单参数的POST请求
python中可以将表单参数封装为一个字符串,也可以做成一个字典,在data参数传入requests。此处的payload也可以写成字典形式。
url = "http://httpbin.org/post"
payload='name=tom&age=18'
headers = {
'Date': '20220822',
'Content-Type': 'application/x-www-form-urlencoded'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
curl中也是同样的,可以将这两个数据写为字符串或者字典。
curl -X POST -H "Date:20220823" -d "name=tom&age=18" http://127.0.0.1:8001/post
需要注意的是curl中可以拆开,将连着的字符串变为两个-d参数,d即是data的意思
curl -X POST -H "Date:20220823" -d "name=tom" -d "age=18" http://127.0.0.1:8001/post
效果也是一样的
但如果写成字典格式,curl得到的结果会略有不同
curl -X POST -H "Date:20220823" -d '{"name":"tom","age":"18"}' http://127.0.0.1:8001/post
这种形式的也可以将这个数据写到文件中,通过@的方式取得。
此种形式还可以用-T参数,将这个文件的数据放入到data中
curl -X POST -H "Date:20220823" -T xx.json http://127.0.0.1:8001/post
此时放入的相当于是body参数中