首頁 > 後端開發 > php教程 > 淺談 PHP 與手機 APP 開發(API 介面開發)

淺談 PHP 與手機 APP 開發(API 介面開發)

WBOY
發布: 2016-07-29 09:13:44
原創
950 人瀏覽過
推薦閱讀: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 範例:
  1. output = array();$a ='''  ? $_GET ['a'] :
  2.  '';''; ['uid']  ? $_GET['uid'] :0
  3.  
  4. if
  5.  (empty ($a)) {    
  6. =>
  7. NULL,  'info'=>'坑爹啊!', 'code'=>-201); it(json_encode ($output));
  8.  
  9. }/  ($a ==
  10.  
  11. 'get_users')
  12.  
  13. {
  14.    
  15.  
  16. ($uid == 0 ) {        $output = NULL
  17. , 'info'
  18. => 'The uid is null!', 'code'=>-401);=>-401); it(json_encode
  19. ($output ));    }
  20.     //假設 $mysql 是資料庫
  21.           Sharp             'uid'
  22. =>10001 'vip'=>5,
  23.          => 'Shine X',           
  24. ,
  25.             'qq'= >979137
  26. ,
  27.             'gold'             'powerplay'=> array
  28. (=> array('2xp' =>
  29. 12
  30. ,'gem'=>12,
  31. 'bingo' '
  32. => 5,'chest'=>
  33. 8
  34. ),   array('red'=> 13,'green'=>3,'blue'=m 17) ,            'ctime'=>     'lastLogin'=>1377123144,
  35.    =>19,            'exp'=>   'exp'       ),        10002  array(            'uid'       'vip'=>50
  36. ,
  37.   ' => 
  38. 'elva'
  39. ,   elva@ezhi.net',
  40.             
  41. 'qq '=>NULL,=>NULL
  42. ,            'gold'             
  43. 'powerplay'
  44. => array
  45. (
  46. '2xp'=>1,'gem'=>
  47. 120
  48. ,=>120,=>
  49. 'keys'
  50. =>5,'chest'=>
  51. 8
  52. ),
  53.             '寶石'=> 數組( '綠' =>3, '藍色'=>8,'黃'=>17 time'=>1376523234 ,             
  54. '最後登入'
  55. =>13771231440 '等級'=>112
  56. ,         167588,
  57.         ),  => 數組(
  58.              10003,            
  59. 'vip'
  60. ,
  61.             
  62. 「暱稱」 =>莉莉 ',           
  63. '電子郵件'               'qq' =>  NULL
  64. ,             '金'             'powerplay'
  65. =>
  66.  數組=> 數組( 2xp'=>2,
  67. '寶石'=>112, '鑰匙' =>7,
  68. '胸部'=>8),  => 數組
  69. ('紅色'=>13,'綠色'=>3
  70. ,''3 = >7),             ,            '最後登錄'=> ,            >'等級'             'exp' =>         
  71. ), uidArr 
  72. = 數組(10001,10002,,10002,,10002,,10002,, );
  73.     if (in_array($ tru​​e)) {        $output = array
  74. (
  75. 'data' => NULL'=> NULL', 'The user does not exist!',  'code' => - exit(json_encode($output));
  76.     }      $mysql[$uid
  77. ];    
  78.     //輸出資料
  79.     $output = 'data' => array
  80. (
  81.      userInfo'
  82.  =>
  83.  $userInfo
  84. ,       tru​​e
  85. ,//是否首次登陸           'unread' =>
  86.  
  87. 4,// ' => 
  88. 3
  89. , //未完成任務        ),  => 
  90. 'Here is the message which, commonly used in popup window' , //訊息提示,客戶端常會以此為給彈窗資訊。        , //成功與失敗的程式碼,一般都是正數或負數
  91.     );     output)); 
  92. }
  93.  elseif ($a 
  94. ==
  95.  'get_games_result' 'get_games_result' '     //...    
  96. die ('您正在調 get_games_result 介面!'); } 'upload_avatars')
  97.   {
  98.     //....    die      
  99. }複製程式碼點擊測試(對客戶端而言,也是直接呼叫這樣的位址):
    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教程有興趣的朋友有所幫助。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板