推薦閱讀:RESTful
是什麼?一起來理解 RESTful 架構
更深入了解API開發這個帖子寫給不太了解PHP與API開發的人一、先簡單回答兩個問題:1、PHP 可以開發客戶端? 答:不可以,因為PHP是腳本語言,是負責完成 B/S架構 或 C/S架構 的S部分,即:服務端的開發。 (別去糾結 GTK、WinBinder)2、為什麼選擇 PHP 作為開發服務端的首選? 答:跨平台(可運行在UNIX、LINUX、WINDOWS、Mac OS下)、低消耗(PHP消耗相當少的系統資源)、運作效率高(相對而言)、MySQL的完美搭檔,本身就是免費開源的,......二、如何使用PHP 開發API(Application Programming Interface,應用程式介面) 呢? 做過API 的人應該了解,其實開發API 比開發WEB 更簡潔,但可能邏輯更複雜,因為API 其實就是資料輸出,不用呈現頁面,所以也不存在MVC(API 只有M 和C) ,1、和WEB 開發一樣,首先需要一些相關的參數,這些參數,都會由客戶端傳過來,也許是GET 也許是POST,這個需要開發團隊相互之間約定好,或者製定統一規範。 2、有了參數,根據應用需求,完成資料處理,例如:任務進度更新、APP內購、一局遊戲結束資料提交等等3、資料邏輯處理完之後,返回客戶端所需要用到的相關數據,例如:任務狀態、內購結果、玩家資訊等等數據怎麼回客戶端? 直接輸出的形式,如:JSON、XML、TEXT 等等。4、客戶端取得到你回傳的資料後,在客戶端本地和使用者進行互動臨時寫的一個簡單API 範例:
-
-
-
output = array();$a =''' ? $_GET ['a'] :
- '';''; ['uid'] ? $_GET['uid'] :0
- if
-
(empty ($a)) {
=>-
NULL, 'info'=>'坑爹啊!', 'code'=>-201); it(json_encode ($output));
-
}/ ($a ==
-
'get_users')
- {
-
-
($uid == 0 ) { $output = NULL
- , 'info'
- => 'The uid is null!', 'code'=>-401);=>-401); it(json_encode
- ($output )); }
-
-
//假設 $mysql 是資料庫
-
Sharp 'uid'
- =>10001 'vip'=>5,
- => 'Shine X',
,-
'qq'= >979137
,-
'gold' 'powerplay'=> array
- (=> array('2xp' =>
12-
,'gem'=>12,
'bingo' '-
=> 5,'chest'=>
8-
), array('red'=> 13,'green'=>3,'blue'=m 17) , 'ctime'=> 'lastLogin'=>1377123144,
- =>19, 'exp'=> 'exp' ), 10002 array( 'uid' 'vip'=>50
,-
' =>
'elva'-
, elva@ezhi.net',
-
'qq '=>NULL,=>NULL
- , 'gold'
'powerplay'-
=> array
(- '2xp'=>1,'gem'=>
120-
,=>120,=>
'keys'- =>5,'chest'=>
8-
),
-
'寶石'=> 數組( '綠' =>3, '藍色'=>8,'黃'=>17 time'=>1376523234 ,
'最後登入'-
=>13771231440 '等級'=>112
- , 167588,
- ), => 數組(
- 10003,
'vip'-
,
-
「暱稱」 =>莉莉 ',
- '電子郵件' 'qq' => NULL
- , '金' 'powerplay'
=>-
數組=> 數組( 2xp'=>2,
- '寶石'=>112, '鑰匙' =>7,
- '胸部'=>8), => 數組
- ('紅色'=>13,'綠色'=>3
- ,''3 = >7), , '最後登錄'=> , >'等級' 'exp' =>
), uidArr - = 數組(10001,10002,,10002,,10002,,10002,, );
-
if (in_array($ true)) { $output = array
(-
'data' => NULL'=> NULL', 'The user does not exist!', 'code' => - exit(json_encode($output));
- } $mysql[$uid
- ];
-
- //輸出資料
- $output = 'data' => array
( userInfo'-
=>
$userInfo-
, true
- ,//是否首次登陸 'unread' =>
-
4,// ' =>
3-
, //未完成任務 ), =>
- 'Here is the message which, commonly used in popup window' , //訊息提示,客戶端常會以此為給彈窗資訊。 , //成功與失敗的程式碼,一般都是正數或負數
-
); output));
}-
elseif ($a
==-
'get_games_result' 'get_games_result' ' //...
- die ('您正在調 get_games_result 介面!'); } 'upload_avatars')
- {
- //.... die
- }複製程式碼點擊測試(對客戶端而言,也是直接呼叫這樣的位址):
http://www.ezhi.net/api/test/index.php
http://www.ezhi.net/api/ test/index.php?a=get_users
http://www.ezhi.net/api/test/index.php?a=get_users&uid=10001
http://www.ezhi.net/api/test/index. php?a=get_users&uid=10002
http://www.ezhi.net/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!
6、做介面開發,不建議使用框架開發,原因概括起來有兩點(其實我有點冒風險的,本人也是TPer 一枚,畢竟這是TP的官網):
1)客戶端一般對服務端的響應速度有極高要求,因此,使用最原生態的PHP 完成接口開發,是最高效的,假如用到了框架,還需要加載各種不需要多餘的文件,就好比夏天穿了件冬天的衣服。試想,你在玩手機的時候,使用一個應用程式隨便一個操作,等半天才有動靜,你受的了嗎?
2)就是上面第4點提到的,框架對於WEB開發,是件很幸福的事,但對於 API 而言,你實在不敢想像它會給你出什麼岔子!最後你將痛苦不堪~~因為很多框架都是為WEB 誕生的(我也很期待有一天能看到專門為開發API 而生的框架或者擴展)
這個也有人糾結,接口效率與穩定性,還得看編碼的人,有的人可能寫的還不如框架跑的快,也有人覺得用框架沒什麼問題,這裡只是建議,關鍵看自己的實際情況,同時建議代碼上線前壓測一下
說到這,不得不說扯一下,騰訊微博淘寶等開放平台。其實那些開放平台,所謂的開放,就是給你提供一個這樣的接口,你根據他們提供的技術文檔,按他們制定的格式和要求,調它們提供的接口文件(一般都是返回JSON或者XML),你就可以獲取到他們的相關信息,例如:QQ用戶基本信息、淘寶店鋪、商品消息等等。然後在根據這些訊息,在你的應用程式裡完成互動。
其實,ajax 也是呼叫 API 的一種體現形式,你覺得呢? 呵呵~~
以上就介紹了淺談 PHP 與手機 APP 開發(API 介面開發),包括了ajax,淘寶店鋪,Application方面的內容,希望對PHP教程有興趣的朋友有所幫助。