新聞中心
如何用php實現(xiàn)API?針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
金山ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!
1、和 WEB 開發(fā)一樣,首先需要一些相關(guān)的參數(shù),這些參數(shù),都會由客戶端傳過來,也許是 GET 也許是 POST,這個需要開發(fā)團隊相互之間約定好,或者制定統(tǒng)一規(guī)范。
2、有了參數(shù),根據(jù)應(yīng)用需求,完成數(shù)據(jù)處理,例如:任務(wù)進度更新、APP內(nèi)購、一局游戲結(jié)束數(shù)據(jù)提交等等
3、數(shù)據(jù)邏輯處理完之后,返回客戶端所需要用到的相關(guān)數(shù)據(jù),例如:任務(wù)狀態(tài)、內(nèi)購結(jié)果、玩家信息等等
數(shù)據(jù)怎么返給客戶端?
直接輸出的形式,如:JSON、XML、TEXT 等等。
4、客戶端獲取到你返回的數(shù)據(jù)后,在客戶端本地和用戶進行交互
臨時寫的一個簡單 API 例子:
NULL, 'info'=>'數(shù)據(jù)錯誤', '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)); } //假設(shè) $MySQL 是數(shù)據(jù)庫 $mysql = array( 10001 => array( 'uid'=>10001, 'vip'=>5, 'nickname' => 'Shine X', 'email'=>'979137@qq.com', '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'=>'elva@ezhi.net', '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)); } //查詢數(shù)據(jù)庫 $userInfo = $mysql[$uid]; //輸出數(shù)據(jù) $output = array( 'data' => array( 'userInfo' => $userInfo, 'isLogin' => true,//是否首次登陸 'unread' => 4,//未讀消息數(shù)量 'untask' => 3,//未完成任務(wù) ), 'info' => 'Here is the message which, commonly used in popup window', //消息提示,客戶端常會用此作為給彈窗信息。 'code' => 200, //成功與失敗的代碼,一般都是正數(shù)或者負數(shù) ); exit(json_encode($output)); } elseif ($a == 'get_games_result') { //... die('您正在調(diào) get_games_result 接口!'); } elseif ($a == 'upload_avatars') { //.... die('您正在調(diào) upload_avatars 接口!'); }
對于客戶端而言,直接調(diào)用這樣的地址:
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
實際項目中,我們在開發(fā) API 應(yīng)該注意的幾個事項(僅供參考):
1、單文件實現(xiàn)多接口的形式有很多種,例如:if..elseif.. 或 switch 或 動態(tài)方法 (也就是TP的這種訪問函數(shù)體的形式)
2、對于數(shù)據(jù)的輸出最好用json,json具有相當(dāng)強大的跨平臺性,市場上各大主流編程語言都支持json解析,json正在逐步取代xml,成為網(wǎng)絡(luò)數(shù)據(jù)的通用格式
3、接口安全,一定要增加接口驗證。例如,客戶端和服務(wù)端針對不同接口統(tǒng)一做好加密方式,服務(wù)端在對于每次接口需要都要進行驗證。以保證防止接口被惡意刷新或黑客惡意調(diào)用,尤其是大型商業(yè)應(yīng)用。
4、對于線上的 API 必須保證所有接口正常且關(guān)閉所有的錯誤信息 => error_reporting(0),在輸出JSON 時,不能有任何其它輸出,否則,客戶端將解析數(shù)據(jù)失敗,直接 Crash!
5、開發(fā) API 和 WEB 有一定的區(qū)別,如果是 WEB 的話,可能代碼出錯了,不會導(dǎo)致特別嚴重的錯誤,也許只是導(dǎo)致數(shù)據(jù)寫入和查詢失敗,也許導(dǎo)致 WEB 的某個部分錯位或亂碼。但如果是 API,直接 Crash!
關(guān)于如何用php實現(xiàn)API問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。
網(wǎng)頁名稱:如何用php實現(xiàn)API
文章鏈接:http://www.ef60e0e.cn/article/gsdhdi.html