生成介面 XML、json、jsonp
阿新 • • 發佈:2019-02-06
<?php
//需求:對外提供一個介面,要求在外部輸入新聞標題,可以獲取到相應的內容,要求提供支援三種格式的介面
//生成介面 XML、json、jsonp
/*
說明:
1、介面地址http://www.study.com/seven7/1410phpB/20160726/app.php
2、請求方式 get
3、支援的資料格式 xml/json/jsonp
4、引數說明
title 必須 使用者要獲取的條件引數
type 可選 xml/json/jsonp 預設為json
key 必填 使用者申請該介面時生成的祕鑰
callback 可選 獲取jsonp資料的時候必填
5、介面案例
json例項:
http://www.study.com/seven7/1410phpB/20160726/app.php?title=你好&key=88888888
xml例項:
http://www.study.com/seven7/1410phpB/20160726/app.php?title=你好&key=88888888&type=xml
jsonp例項:
http://www.study.com/seven7/1410phpB/20160726/app.php?title=你好&key=88888888&type=jsonp&callback=data
*/
//第一步 判斷祕鑰
$token='8888888888888888888'; //使用者申請介面成功後的key值,假設我們是直接session中取出來,就是使用者申請時存進去
$key=$_GET['key']; //接收使用者傳遞的祕鑰
$type=isset($_GET['type']) ? $_GET['type'] : 'json'; //接收使用者要獲取的資料的格式
$condition=$_GET['title'];
//判斷使用者是否是正常訪問
if($token!=$key){
echo '請輸入正確的key值';
die;
}
$pdo=new PDO('mysql:host=localhost;dbname=test','root','root');
$pdo->exec('set names utf8');
$data=$pdo->query("select * from news where title like '%$condition%'")->fetchAll(PDO::FETCH_ASSOC);
if($type=='xml'){
//1)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>'.$v['content'].'</content>';
echo '</new>';
}
echo '</news>';
}elseif($type=='jsonp'){
header('content-type:text/json');
//2)jsonp格式
$str=json_encode($data); //把陣列轉換json格式的字串,使用者回撥函式返回資料
$callback=$_GET['callback']; //接收回調函式的名稱
echo $callback."(".$str.")";
}else{
//3)json格式
echo json_encode($data);
}
//需求:對外提供一個介面,要求在外部輸入新聞標題,可以獲取到相應的內容,要求提供支援三種格式的介面
//生成介面 XML、json、jsonp
/*
說明:
1、介面地址http://www.study.com/seven7/1410phpB/20160726/app.php
2、請求方式 get
3、支援的資料格式 xml/json/jsonp
4、引數說明
title 必須 使用者要獲取的條件引數
type 可選 xml/json/jsonp 預設為json
key 必填 使用者申請該介面時生成的祕鑰
callback 可選 獲取jsonp資料的時候必填
5、介面案例
json例項:
http://www.study.com/seven7/1410phpB/20160726/app.php?title=你好&key=88888888
xml例項:
http://www.study.com/seven7/1410phpB/20160726/app.php?title=你好&key=88888888&type=xml
jsonp例項:
http://www.study.com/seven7/1410phpB/20160726/app.php?title=你好&key=88888888&type=jsonp&callback=data
*/
//第一步 判斷祕鑰
$token='8888888888888888888'; //使用者申請介面成功後的key值,假設我們是直接session中取出來,就是使用者申請時存進去
$key=$_GET['key']; //接收使用者傳遞的祕鑰
$type=isset($_GET['type']) ? $_GET['type'] : 'json'; //接收使用者要獲取的資料的格式
$condition=$_GET['title'];
//判斷使用者是否是正常訪問
if($token!=$key){
echo '請輸入正確的key值';
die;
}
$pdo=new PDO('mysql:host=localhost;dbname=test','root','root');
$pdo->exec('set names utf8');
$data=$pdo->query("select * from news where title like '%$condition%'")->fetchAll(PDO::FETCH_ASSOC);
if($type=='xml'){
//1)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>'.$v['content'].'</content>';
echo '</new>';
}
echo '</news>';
}elseif($type=='jsonp'){
header('content-type:text/json');
//2)jsonp格式
$str=json_encode($data); //把陣列轉換json格式的字串,使用者回撥函式返回資料
$callback=$_GET['callback']; //接收回調函式的名稱
echo $callback."(".$str.")";
}else{
//3)json格式
echo json_encode($data);
}