<?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;
}