PHP制作API接口


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM