ThinkPHP是php程序员们经常使用的框架之一,运用框架来开发网站无疑减轻了我们代码量,加快了我们的开发速度,框架底层封装的方法和函数使用起来简直不能太爽。今天给大家总结一个小案例,如何实现一个快递查询的接口。
所谓接口,就是程序之间交互数据的一种方式,说白了就是浏览器通过url请求到的地址中的代码。而提供快递查询的第三方平台有很多,常见的有快递100、聚合数据、阿里云、腾讯云京东万象等。聚合数据首次申请api可以送100次,这里我们以聚合数据平台为例,后面的内容我会把我申请的key展示出来。
接口页面:https://www.juhe.cn/docs/api/id/43
接口地址:http://v.juhe.cn/exp/index
返回格式:json/xml
请求方式:http post/get
必传请求参数: com 快递公司编号; no 快递单号; key 授权key
请求示例:http://v.juhe.cn/exp/index?com=zto&no=73115984252335&key=e12a8de6adad6f7da3c9292f9275f70b
直接请求上面路径的话,得到的无疑是一段可读性不强的数据,如下图:
下面我们使用TP框架将快递信息展示出来:
1.我们使用phpstorm通过命令行工具创建一个api模块:
2.在自动生成的index控制器中声明一个名为kuaidi的函数:
3.代码书写如下:
public function kuaidi(){//接口地址$url = "http://v.juhe.cn/exp/index";//请求参数$params = ['com' => 'zto','no' => '73115984252335','key' => 'e12a8de6adad6f7da3c9292f9275f70b'];//发送请求$res = curl_request($url, true, $params);if(!$res){echo '请求失败';die;}//解析结果$arr = json_decode($res, true);//查询失败if($arr['resultcode'] != 200){echo $arr['reason'];die;}//查询成功,展示信息$list = $arr['result']['list'];echo '时间 ------------------------ 物流信息<br>';foreach($list as $v){echo $v['datetime'], '------------------------', $v['remark'], '<br>';}}
4.通过浏览器访问http://www.tpshop.com/api/index/kuaidi,结果如下:
以上就是实现快递查询接口的整个流程了,另外,我总结了2个注意事项:
1:此访问域名需要在phpStudy集成环境中配置虚拟站点(过程略)以及在host文件中添加 127.0.0.1 www.tpshop.com
2:内置函数json_decode()是对JSON数据进行解码,转换为PHP变量。而json_encode() 是对变量进行JSON编码
另外,在开发接口之后,为了和前端程序员交流起来方便,还需要写一份接口文档哦。