需要单一入口文件,可以使用autoload来加载
1 <?php 2 //获取get参数 3 $m = !empty($_GET['m'])?$_GET['m']:'Index'; 4 $a = !empty($_GET['a'])?$_GET['a']:'index'; 5 6 //引入类库 7 include './Libs/config.php'; 8 include './Libs/Model.class.php'; 9 include './Libs/Auth.php'; 10 include './Libs/Tool.php'; 11 12 //调用方法检测参数是否完整 13 Auth::CheckTime(); 14 Auth::CheckSign(); 15 16 function __autoload($className){ 17 //检测文件是否存在 18 if (file_exists('./Controller/'.$className.'.php')) { 19 include './Controller/'.$className.'.php'; 20 }else if(file_exists('./Libs/'.$className.'.php')){ 21 include './Libs/'.$className.'.php'; 22 }else{ 23 echo '调用的类不存在'; 24 exit; 25 } 26 } 27 $classname = $m.'Controller'; 28 $obj = new $classname; 29 $obj->$a(); 30 ?>
response方法用来返回json数据包
JSON_UNESCAPED_UNICODE:以字面编码多字节 Unicode 字符(默认是编码成 \uXXXX)。自 PHP 5.4.0 起生效。
<?php public static function response($errCode,$tips){ $response = array('code'=>$errCode,'msg'=>$tips,'data'=>[]); $res = json_encode($response,JSON_UNESCAPED_UNICODE); echo $res; } ?>
Auth类用来检测传值是否正确,这里用了两个检测参数的方法,第一个用来检测是否超时,第二个用来检测sign是否正确(sign可以保存在数据库中以确保每个用户的sign不一样)
1 <?php 2 class Auth{ 3 public static function CheckTime(){ 4 //判断是否有t参数 5 if (empty($_GET['t'])) { 6 //调用response方法,传入错误码以及提示文字 7 Tool::response('err001','缺少时间参数'); 8 exit; 9 }else if(time()-$_GET['t']>=10){ 10 Tool::response('err002','请求超时'); 11 exit; 12 } 13 } 14 public static function CheckSign(){ 15 //判断是否有sign参数 16 if (empty($_GET['sign']) || $_GET['sign']!='RPGMSonlKKu8ROdF3KyPUdCvnTPdIDx5') { 17 //调用response方法,传入错误码以及提示文字 18 Tool::response('err003','Sign认证失败'); 19 exit; 20 } 21 } 22 } 23 ?>
IndexController,用来作为数据查询返回
1 <?php 2 class IndexController{ 3 public function get($num=""){ 4 $link = mysqli_connect('localhost','root','password') or die("数据库连接失败"); 5 mysqli_select_db($link,'dbname'); 6 mysqli_set_charset($link,'utf8'); 7 if($num!=''){ 8 $sql = "SELECT * FROM content limit=".$num; 9 }else{ 10 $sql = "SELECT * FROM content"; 11 } 12 $data=mysqli_query($link,$sql); 13 mysqli_close($link); 14 //返回值数组 15 $response = array('code'=>'000000','msg'=>'ok','data'=>$data); 16 $res = json_encode($response,JSON_UNESCAPED_UNICODE); 17 echo $res; 18 } 19 } 20 ?>
最后请求地址为:API接口地址?m=index&a=get&num=2&t=time&sign=sign