如何使用 PHP 開發 API(Application Programming Interface,應用程式程式設計介面) 呢?
1、和 WEB 開發一樣,首先需要一些相關的引數,這些引數,都會由用戶端傳過來,也許是 GET 也許是 POST,這個需要開發團隊相互之間約定好,或者制定統一規範。
2、有了引數,根據應用需求,完成資料處理,例如:任務進度更新、APP內購、一局遊戲結束資料提交等等
3、資料邏輯處理完之後,返回用戶端所需要用到的相關資料,例如:任務狀態、內購結果、玩家資訊等等
資料怎麼返給用戶端?
直接輸出的形式,如:JSON、XML、TEXT 等等。
4、用戶端獲取到你返回的資料後,在用戶端本地和使用者進行互動
臨時寫的一個簡單 API 例子:
<?php // 設定json格式 header('content-type:application/json;charset=utf-8'); $output = array(); $a = @$_GET['a'] ? $_GET['a'] : ''; $uid = @$_GET['uid'] ? $_GET['uid'] : 0; if (empty($a)) { $output = array('data'=>NULL, 'info'=>'資料錯誤', 'code'=>-201); exit(json_encode($output)); } //走介面 if ($a == 'get_users') { //檢查使用者 if ($uid == 0) { $output = array('data'=>NULL, 'info'=>'The uid is null!', 'code'=>-401); exit(json_encode($output)); } //假設 $mysql 是資料庫 $mysql = array( 10001 => array( 'uid'=>10001, 'vip'=>5, 'nickname' => 'Shine X', 'email'=>'[email protected]', 'qq'=>979137, 'gold'=>1500, 'powerplay'=> array('2xp'=>12,'gem'=>12,'bingo'=>5,'keys'=>5,'chest'=>8), 'gems'=> array('red'=>13,'green'=>3,'blue'=>8,'yellow'=>17), 'ctime'=>1376523234, 'lastLogin'=>1377123144, 'level'=>19, 'exp'=>16758, ), 10002 => array( 'uid'=>10002, 'vip'=>50, 'nickname' => 'elva', 'email'=>'[email protected]', 'qq'=>NULL, 'gold'=>14320, 'powerplay'=> array('2xp'=>1,'gem'=>120,'bingo'=>51,'keys'=>5,'chest'=>8), 'gems'=> array('red'=>13,'green'=>3,'blue'=>8,'yellow'=>17), 'ctime'=>1376523234, 'lastLogin'=>1377123144, 'level'=>112, 'exp'=>167588, ) ); $uidArr = array(10001,10002); if (in_array($uid, $uidArr, true)) { $output = array('data' => NULL, 'info'=>'The user does not exist!', 'code' => -402); exit(json_encode($output)); } //查詢資料庫 $userInfo = $mysql[$uid]; //輸出資料 $output = array( 'data' => array( 'userInfo' => $userInfo, 'isLogin' => true,//是否首次登陸 'unread' => 4,//未讀訊息數量 'untask' => 3,//未完成任務 ), 'info' => 'Here is the message which, commonly used in popup window', //訊息提示,用戶端常會用此作為給彈窗資訊。 'code' => 200, //成功與失敗的程式碼,一般都是正數或者負數 ); exit(json_encode($output)); } elseif ($a == 'get_games_result') { //... die('您正在調 get_games_result 介面!'); } elseif ($a == 'upload_avatars') { //.... die('您正在調 upload_avatars 介面!'); }
對於用戶端而言,直接呼叫這樣的地址:
http://localhost/api/test/index.php http://localhost/api/test/index.php?a=get_users http://localhost/api/test/index.php?a=get_users&uid=10001 http://localhost/api/test/index.php?a=get_users&uid=10002 http://localhost/api/test/index.php?a=get_users&uid=10003
實際專案中,我們在開發 API 應該注意的幾個事項(僅供參考):
1、單檔案實現多介面的形式有很多種,例如:if..elseif.. 或 switch 或 動態方法 (也就是TP的這種存取函數體的形式)
2、對於資料的輸出最好用json,json具有相當強大的跨平台性,市場上各大主流程式語言都支援json解析,json正在逐步取代xml,成為網路資料的通用格式
3、介面安全,一定要增加介面驗證。例如,用戶端和伺服器端針對不同介面統一做好加密方式,伺服器端在對於每次介面需要都要進行驗證。以保證防止介面被惡意重新整理或駭客惡意呼叫,尤其是大型商業應用。
4、對於線上的 API 必須保證所有介面正常且關閉所有的錯誤資訊 => error_reporting(0),在輸出JSON 時,不能有任何其它輸出,否則,用戶端將解析資料失敗,直接 Crash!
5、開發 API 和 WEB 有一定的區別,如果是 WEB 的話,可能程式碼出錯了,不會導致特別嚴重的錯誤,也許只是導致資料寫入和查詢失敗,也許導致 WEB 的某個部分錯位或亂碼。但如果是 API,直接 Crash!
以上就是php專案中的介面怎麼寫的詳細內容,更多請關注TW511.COM其它相關文章!