需要单一入口文件,可以使用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