【3分钟带你学】接口
2017-12-06 02:26
127 查看
接口编程
一、了解接口
1.什么是接口?
API(Application Programming Interface,应用程序编程接口)程序之间交互数据的一种方式。
接口编程(开发):分为接口编写,接口调用两部分。
接口编写:在服务端编写一个请求地址(控制器中的方法)中的代码,接收请求参数、处理数据,返回数据。服务端接口就是一个通过url可以访问到的请求地址,类似服务器端处理ajax请求
接口调用:在其他端(浏览器客户端、其他服务端)发送请求,调用服务端的接口地址。
2.请求类型
从请求方式划分 :get、post从请求协议划分:http、https
3.发送请求的方式
从浏览器(客户端)发送请求:从地址栏输入url发送请求,只能GET
form 表单提交,可以是GET、POST
Ajax请求,可以是GET、POST
从服务器端php发送请求:
header(Location:http://www.exaple.com;) GET,无返回值
file_get_contents(url)可以获取对应地址的输出,GET,有返回值
使用PHP内置的CURL函数库 可以是GET、POST、http、https有返回值
CURL请求步骤[注意]
[注意]: 使用CURL函数库,必须要在php.ini中开启php_curl扩展②建议在php.ini中开启php_openssl扩展(本身不是curl必须的,是调用一些第三方接口需要的) ③若还是不能使用,需要将php安装目录设置到环境变量
curl_init() //函数初始化请求会话,可以传递一个请求地址参数。 curl_setopt() //函数设置请求参数(选项) curl_exec() //函数发送请求,有返回值 //返回值数据类型:字符串格式 //根据字符串结构,通常分为:普通字符串/json格式/xml格式 curl_close() //关闭请求会话
二、经典案例
1.快递查询接口(快递100)
快递100提供签约和免签约2个快递接口,以免签约为例接口地址:https://www.kuaidi100.com/query?type=快递公司&postid=运单编号
请求方式:get
示例:快递公司:yunda 单号:3101314976598
此接口是get方式的接口,在浏览器直接访问,得到的是json格式的字符串。
步骤1
//封装一个函数用来发送curl请求 /* *$url 请求的地址 *$post 请求方式,默认get *$params post方式的请求参数 *https 是否是https请求,默认http */ function curl_request($url, $post=false, $params=array(), $https=false){ $ch = curl_init($url); //初始化请求会话 if($post){ curl_setopt($ch, CURLOPT_POST, true); //设置请求方式 curl_setopt($ch, CURLOPT_POSTFIELDS, $params); //设置post请求参数,get的参数在url中 } if($https){ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //如果是https请求,且没有证书,可以禁止从服务器端验证ssl证书 } $res = curl_exec($ch); //发送请求,有返回值 curl_close($ch); //关闭会话 return $res; }
2编写控制器方法
public function kuaidi(){ $type = 'yunda'; $postid = '3101314976598'; $url = "https://www.kuaidi100.com/query?{$type}&{$postid}"; //发送请求 $res = curl_request($url, false, array(), true); if(!$res) die('请求失败'); $data = json_decode($res, true);//将返回的数组转换为数组 if($data['status'] != 200) die($data['message']); /***************如果1:直接输出展示************/ foreach($data['data'] as $v){ echo $v['time'] .'----'. $v['context'] .'<br>'; } /************如果2:ajax请求*************/ $return = array( 'code' => 10000, 'msg' => 'success', 'data' => $data['data'] ) $this -> ajaxReturn($return); /************如果3:调用页面展示***********/ $this -> assign('data', $data['data']); $this -> display(); }
2.短信验证码
使用接口需要先申请接口的appkey模板页面发送ajax请求(略)
编写控制器方法是
public function sendmsg(){ $phone = I('post.phone'); $code = mt_rand(1000, 9999); $content = "您的验证码是:{$code}"; $appKey = "你获取的appKey"; $url = "请求的接口地址?$mobile={$phone}&$content={$content}&$code={$code}"; //发送请求 $res = curl_request($url,post,array(),$true); if(!$res){ $return = array('code' => 10001, 'msg' => '网络异常'); $this -> ajaxReturn($return); } $data = json_encode($res, true); if($data['code'] != 10000){ $return = array('code' => 10002, 'msg' => $data['msg']); $this -> ajaxReturn($return); } $return = array('code'=>10000,'msg'=>"发送成功"); $this -> ajaxReturn($return); }
相关文章推荐
- 3分钟速读:图解Java Collections的接口以及类层级关系
- 微信分享接口开发
- 接口 多态 instanceof 面向对象
- 怎样获取未知DLL的接口参数
- AE常见接口之间的关系+常见概念
- 利用 caffe 接口构建 CNN 网络
- 接口测试 postman
- 接口测试概念及分类
- C#接口interface用法实例
- 微信公众平台消息接口开发(3)中英翻译
- 接口和抽象类有什么区别
- Java小程序---接口中抽象方法的实现(解决了JAVA语言不能多继承的问题)
- 开源免费天气预报接口API以及全国…
- PHP获取用户真实 IP , 淘宝IP接口获得ip地理位置
- 用servlet写接口时遇到的一系列的问题,跟Spring有关
- dsp6455 + FPGA的EMIF数据接口
- RobotFramework下的http接口自动化Get关键字的使用
- Java集合(1)——Iterable接口和Iterator接口
- COM 对象 和 接口