1. 程式人生 > >用PHP開發手機 APP應用API介面開發

用PHP開發手機 APP應用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 例子:

<?php
$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,         ),         10003 => array(             'uid' => 10003,             'vip' => 5,             'nickname' => 'Lily',             'email' => '[email protected]',             'qq' => NULL,             'gold' => 1541,             'powerplay'=> array('2xp'=>2,'gem'=>112,'bingo'=>4,'keys'=>7,'chest'=>8),             'gems' => array('red'=>13,'green'=>3,'blue'=>9,'yellow'=>7),             'ctime' => 1376523234,             'lastLogin'=> 1377123144,             'level' => 10,             'exp' => 1758,         ),     );          $uidArr = array(10001,10002,10003);     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://www.jiaxiangz.com/api/test/index.php
http://www.jiaxiangz.com/api/test/index.php?a=get_users
http://www.peoplenews.org/api/test/index.php?a=get_users&uid=10001
http://www.guohu.info/api/test/index.php?a=get_users&uid=10002
http://www.nongyejing.com/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介面開發

這個帖子寫給不太瞭解PHP與API開發的人一、先簡單回答兩個問題:1、PHP 可以開發客戶端?答:不可以,因為PHP是指令碼語言,是負責完成 B/S架構 或 C/S架構 的S部分,即:服務端的開發。(別去糾結 GTK、WinBinder)2、為什麼選擇 PHP 作為開發服務端

Smobiler實現美觀登入介面——C# 或.NET Smobiler例項開發手機app(二)

目錄 一、 本文目標 二、 準備工作 1、 資料庫 2、 材料 三、 介面佈局 1、設定控制元件的屬性值 (1) 輸入框 (2) 圖片屬性 (3) HandElectricity的標題的label屬性 (4)登入按鈕 (5)版權申明  (

呼叫API介面開發跨平臺音視訊應用

直接使用AnyChat 提供的API開發,上層應用需要處理回撥函式、非同步訊息通知等流程,為了簡化開發流程,可以使用我們提供的AnyChat SDK包裝類(C++封裝):CBRAnyChatSDKProc(位於:SDK

Java(APICloud)開發手機APP

近幾年手機開發非常流行,可是ios有自己的一套語言,Android雖然可以用Java開發但是也是要需要從google下載外掛,總感覺不那麼方便,作為Java開發者,有沒有一種使用Java語言能夠快速開發APP的軟體呢?最近看到公司同事在用APICloud開發APP,我學了一

循序漸進VUE+Element 前端應用開發(13)--- 前端API介面的封裝處理

在前面隨筆《循序漸進VUE+Element 前端應用開發(12)--- 整合ABP框架的前端登入處理》介紹了一個系統最初接觸到的前端登入處理的實現,但往往對整個系統來說,一般會有很多業務物件,而每個業務物件的API介面又有很多,不過簡單來說也就是常規的增刪改查,以及一些自定義的介面,通用都比較有規律性。而本身

jmeter做手機應用的性能測試

seconds period 執行 這一 屬性 查看 組件 訪問服務器 多次 最近公司的新應用要上線,領導要求做壓力測試,翻遍了大大小小的測試網站都找不到ios端應用的性能測試工具。 之前用Jmeter做過web應用測試,現在公司的產品也是http協議的,就考慮說手動

Smobiler打包apk安裝包——C# 或.NET Smobiler例項開發手機app(六)

免責宣告:此文涉及“極光”、“高德”、“掌上川電”關鍵字。本人以傳遞知識的心態發表文章,若有侵權聯絡[email protected]即刪! 目錄 一、 前言 二、建立應用 1、 註冊Smobiler的賬號 2、上傳資源 3、 連線專案 三、 應用打包

Smobiler資料準備與環境搭建——C# 或.NET Smobiler例項開發手機app(一)

目錄 一、 前言 二、 關於"選擇" 三、 資料準備 1、 Smobiler介紹 2、 三款開源軟體原始碼下載 3、 控制元件使用例項 四、 環境搭建到實現HelloWorld 1、 安裝VS2015及以上 2、 安裝Designer 3、 實現Hello

手機APP應用外網訪問本地WEB應用

.exe ole dom 程序 工作 pro 通過 tps intern 手機APP應用外網訪問本地WEB應用 本地安裝了WEB服務端,手機APP應用只能在局域網內訪問本地WEB,怎樣使手機APP應用從公網也能訪問本地WEB? 本文將介紹具體的實現步驟。 1. 準備工作 1

手機APP應用公網訪問區域網WEB應用

手機APP應用公網訪問區域網WEB應用 本地安裝了WEB服務端,手機APP應用只能在區域網內訪問本地WEB,怎樣使手機APP應用從公網也能訪問本地WEB? 本文將介紹具體的實現步驟。 1. 準備工作 1.1 安裝並啟動WEB服務端程式 預設安裝的WEB服務端的埠是80。

手機APP應用公網訪問內網WEB應用

手機APP應用公網訪問本地WEB應用 本地安裝了WEB服務端,手機APP應用只能在區域網內訪問本地WEB,怎樣使手機APP應用從公網也能訪問本地WEB? 本文將介紹具體的實現步驟。 1. 準備工作 1.1 安裝並啟動WEB服務端程式 預設安裝的WEB服務端的埠是80。

RESUTFUL風格 API介面開發spring MVC篇

Restful風格API介面開發springMVC篇 Restful風格的API是一種軟體架構風格,設計風格而不是標準,只是提供了一組設計原則和約束條件。它主要用於客戶端和伺服器互動類的軟體。基於這個風格設計的軟體可以更簡潔,更有層次,更易於實現快取等機制。 在Restful

項目-開發手機app

架構 targe 覆蓋 cloud open href 頁面框架 .html 一個 一. 安裝Hbuilder,和夜神安卓模擬器 註:夜神模擬器,如過windows中安裝了hyper-v,需要卸載,不然會死機 二. Hbuilder簡介 官網:http://www.

專案-開發手機app

一.  安裝Hbuilder,和夜神安卓模擬器 注:夜神模擬器,如過windows中安裝了hyper-v,需要解除安裝,不然會宕機 二. Hbuilder簡介 官網:http://www.dcloud.io/ 文件:http://dev.dcloud.net.cn/mui/ 1. 

Java後臺框架篇--Spring與Restful風格API介面開發

Restful風格的API是一種軟體架構風格,設計風格而不是標準,只是提供了一組設計原則和約束條件。它主要用於客戶端和伺服器互動類的軟體。基於這個風格設計的軟體可以更簡潔,更有層次,更易於實現快取等機制。 在Restful風格中,使用者請求的url使用同一個url而用請求方式:get,post,

Smobiler實現app的主頁(上)——C# 或.NET Smobiler例項開發手機app(三)

其實在寫這篇文章的時候,我已經成功的將程式碼打包成apk的安裝包了並且在手機上安裝成功了,但是目前我這個掌上川電的app生活服務功能還未實現。有興趣瞭解一下打包的可以直接跳到本文末尾,點選連結直通車。 目錄 1、 標題欄 一、

Laravel 之道特別篇 3: 模型式 Web API 介面開發流程

轉載https://laravel-china.org/articles/20183 導語 這篇文章是我使用 Laravel 開發 Web Api 總結的自己一套開發流程。 記錄在此,方便回顧。 同時,將自己的經驗分享給大家。 這套流程,可能稍微複雜,對軟體設計方面支援還有待

API介面開發 配置、實現、測試

原文地址為: API介面開發 配置、實現、測試 Yii2 基於RESTful架構的 advanced版API介面開發 配置、實現、測試 環境配置: 開啟伺服器偽靜態 本處以apache為例,檢視apache的conf目錄下httpd.conf,找到下面的程式碼

知乎日報APPAPI介面分析

宣告 以下所有 API 均由 知乎(Zhihu.Inc) 提供,本人(Izzy Leung)採取非正常手段獲取。獲取與共享之行為或有侵犯知乎權益的嫌疑。若被告知需停止共享與使用,本人會及時刪除此頁面與整個專案。 請您暸解相關情況,並遵守知乎協議。 API 說明 知乎

網站url路徑優化方法完全講解 (url優化、基於tp5、API介面開發)

url優化可是網站開發的必備高階技能,先看本例項優化前後效果比較: (同為呼叫前臺模組下的index控制器下的index方法) 優化前:www.tp5.com/tp5/public/index.php/index/index/index。 優化後:www.tp5.com