巧用Curl命令-测试接口的可用性

2019年6月18日17:52:47 发表评论 351 views
摘要

本文介绍Curl的日常使用,并实际记录一次案例,今天我们无法访问客户网络,但是又需要返回接口是否有已经可用的情况,可试用以下命令发送json字符串来测试接口的连通性。

巧用Curl命令-测试接口的可用性

一、Curl命令模拟 POST 请求

大部分的借口都是采用post发送请求,所以我们必须学会查看API借口文档,并使用post接口调试工具,最后将生成的命令集合,放到python或者shell脚本中,提取关键字,判断接口业务可用性。

POST请求:

POST就是发送、提交。可以向指定的资源提交要被处理的数据。

如果使用表单方式进行提交,表单的method必须设置为POST。

1.1 json 数据类型

curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"NET.getWanParam","params":[],"id":67}' http://192.168.200.1/cgi-bin/router

## --data {} 里是你要请求的数据,这里要看开发你写的api文档,按照规则写(传参)
## http://192.168.200.1/cgi-bin/router  是请求api的地址
## 截图涉及隐私,就网上cp个图,放下面 意思意思

巧用Curl命令-测试接口的可用性

1.2 shell输出json某字段的value

grep -Po 'userId[" :]+\K[^"]+' a.txt

#其中a.txt是文件名
#userId是字段名称
#你想要哪个写替换下即可。

2. x-www-form-urlencoded 数据类型

POST应用程序/ x-www-form-urlencoded
application/x-www-form-urlencoded 是默认值:

[root@Admin ~]# curl -d "respData={}&serviceName=123&platformNo=123312&responseType=123321&keySerial=123321&sign=123321" -X POST http://qiuyuetao.com/1233/xinwangCallBack
failure

巧用Curl命令-测试接口的可用性

Post方式提交的特点:

  • post提交数据相对于get的安全性高一些。(注意:抓包软件也会抓到post的内容,安全性要求高可以进行加密)

  • 传递数据量大,请求对数据长度没有要求。

  • 请求不会被缓存,也不会保留在浏览器的历史记录中。

  • 用于密码等安全性要求高的场合,提交数据量较大的场合,如上传文件,发布文章等。

  • POST方式提交数据上限默认为8M(可以在PHP的配置文件post_max_size选项中修改)

二、Curl命令模拟 GET 请求

GET通常用于获取服务端数据。

常见发起GET请求的方式有:URL 、src/href、表单(form)。

[root@Admin ~]# curl  https://api.qiuyuetao.com
{"responseHeader":{"sysCode":"000000","sysMsg":"系统正常","accountStatus":"","bankStatus":"","android":"","ios":"","activateUserStatus":"1","encrypt":"1"},"responseData":{"data":"","msg":"No handler found for GET /","msgTip":"","code":"000001"}}

GET方式提交数据特点:

  • get方式在url后面拼接参数,只能以文本的形式传递参数。

  • 传递的数据量小,4kb左右(不同浏览器会有差异)。

  • 安全性低,会将信息显示在地址栏。

  • 速度快,通常用于对安全性要求不高的请求。

三、总结

通过curl的返回值,来判断api的状态(抓取关键字:比如 sysCode:000000代表正常);
最好在结合python或shell脚本,实现api自动化监控,配置微信公众号,实时推送到微信报警,或者钉钉即可。

微信报警教程

  • QQ精品交流群
  • weinxin
  • 微信公众号
  • weinxin
admin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: