【3分钟带你学】接口

接口编程

一、了解接口

1.什么是接口?

API(Application Programming Interface,应用程序编程接口)

程序之间交互数据的一种方式。

接口编程(开发):分为接口编写,接口调用两部分。

  1. 接口编写:在服务端编写一个请求地址(控制器中的方法)中的代码,接收请求参数、处理数据,返回数据。服务端接口就是一个通过url可以访问到的请求地址,类似服务器端处理ajax请求
  2. 接口调用:在其他端(浏览器客户端、其他服务端)发送请求,调用服务端的接口地址。

2.请求类型

从请求方式划分 :get、post

从请求协议划分:http、https

3.发送请求的方式

从浏览器(客户端)发送请求:

  1. 从地址栏输入url发送请求,只能GET
  2. form 表单提交,可以是GET、POST
  3. Ajax请求,可以是GET、POST

从服务器端php发送请求:

  1. header(Location:http://www.exaple.com;) GET,无返回值
  2. file_get_contents(url)可以获取对应地址的输出,GET,有返回值
  3. 使用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

  1. 模板页面发送ajax请求(略)

  2. 编写控制器方法是

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);
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值