php接口编写

来源:互联网 发布:centos指令大全 编辑:程序博客网 时间:2024/06/07 12:16
<?php
  //生成接口   支持三种格式 xml/json/jsonp
  //需求:对外提供一个通过标题可以查询新闻内容的接口

  //接口说明:通过标题获取内容
  //请求实例地址:http://localhost/20160801/api.php
  //请求方式: get
  //请求参数说明:
  //    名称     类型     必填     说明
  //    title     string     是     需要查询新闻的标题
  //    key     string     是     应用APPKEY(应用详细页查询)
  //    dtype     string     否     返回数据的格式,xml或json或jsonp,默认json
  //   jsoncallback  string  否  返回jsonp格式时必须传递的回调函数的参数名


   //书写接口第一步
  //1接收参数
  $title=$_GET['title'];
  $key=$_GET['key'];
  $dtype=isset($_GET['dtype']) ?  $_GET['dtype'] : 'json';
  $token="111"; //用户在申请接口时产生的(redis、数据库、mongoDB、session)
  //2 判断
   if($key!=$token){
     echo '非法请求';
     die;
   }
  //3获取数据
   $pdo=new PDO('mysql:host=localhost;dbname=test','root','root');
   $pdo->exec('set names utf8');
   $sql="select * from news where title like '%$title%'";
   $data=$pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);
   if($dtype=='xml'){
     //xml
     header("content-type:text/xml;charset=utf-8");
     echo "<?xml version='1.0' encoding='utf-8' ?>";
     echo "<news>";
     foreach($data as $v){
       echo "<new>";
       echo "<title>".$v['title']."</title>";
       echo "<content>"."<![CDATA[".$v['content']."]]>"."</content>";
       echo "</new>";
     }
     echo "</news>";
   }elseif($dtype=='jsonp'){
     //jsonp
     //接收回调函数值
     $callback=$_GET['jsoncallback'];
     $str=json_encode($data);  //转换为json字符串
     echo  $callback."(".$str.")";
   }else{
     //json
      $str=json_encode($data);  //转换为json字符串
      echo $str;
   }
0 0
原创粉丝点击