首頁 >後端開發 >PHP問題 >php專案中的介面怎麼寫

php專案中的介面怎麼寫

angryTom
angryTom原創
2019-11-04 11:17:462567瀏覽

php專案中的介面怎麼寫

如何使用 PHP 開發 API(Application Programming Interface,應用程式介面) 呢?

1、和WEB 開發一樣,首先需要一些相關的參數,這些參數,都會由客戶端傳過來,也許是GET 也許是POST,這個需要開發團隊相互之間約定好,或製定統一規範。

2、有了參數,根據應用需求,完成資料處理,例如:任務進度更新、APP內購、一局遊戲結束資料提交等等

3、資料邏輯處理完之後,傳回客戶端所需用到的相關數據,例如:任務狀態、內購結果、玩家資訊等等

數據怎麼回客戶端?

直接輸出的形式,如:JSON、XML、TEXT 等等。

4、客戶端取得到你回傳的資料後,在客戶端本地和使用者進行互動

#暫時寫的一個簡單API 範例:

<?php
// 设置json格式
header(&#39;content-type:application/json;charset=utf-8&#39;);
$output = array();
$a = @$_GET[&#39;a&#39;] ? $_GET[&#39;a&#39;] : &#39;&#39;;
$uid = @$_GET[&#39;uid&#39;] ? $_GET[&#39;uid&#39;] : 0;
if (empty($a)) {
    $output = array(&#39;data&#39;=>NULL, &#39;info&#39;=>&#39;数据错误&#39;, &#39;code&#39;=>-201);
    exit(json_encode($output));
}
//走接口
if ($a == &#39;get_users&#39;) {
    //检查用户
    if ($uid == 0) {
        $output = array(&#39;data&#39;=>NULL, &#39;info&#39;=>&#39;The uid is null!&#39;, &#39;code&#39;=>-401);
        exit(json_encode($output));
    }
    //假设 $mysql 是数据库
    $mysql = array(
        10001 => array(
            &#39;uid&#39;=>10001,
            &#39;vip&#39;=>5,
            &#39;nickname&#39; => &#39;Shine X&#39;,
            &#39;email&#39;=>&#39;979137@qq.com&#39;,
            &#39;qq&#39;=>979137,
            &#39;gold&#39;=>1500,
            &#39;powerplay&#39;=> array(&#39;2xp&#39;=>12,&#39;gem&#39;=>12,&#39;bingo&#39;=>5,&#39;keys&#39;=>5,&#39;chest&#39;=>8),
            &#39;gems&#39;=> array(&#39;red&#39;=>13,&#39;green&#39;=>3,&#39;blue&#39;=>8,&#39;yellow&#39;=>17),
            &#39;ctime&#39;=>1376523234,
            &#39;lastLogin&#39;=>1377123144,
            &#39;level&#39;=>19,
            &#39;exp&#39;=>16758,
        ),
        10002 => array(
            &#39;uid&#39;=>10002,
            &#39;vip&#39;=>50,
            &#39;nickname&#39; => &#39;elva&#39;,
            &#39;email&#39;=>&#39;elva@ezhi.net&#39;,
            &#39;qq&#39;=>NULL,
            &#39;gold&#39;=>14320,
            &#39;powerplay&#39;=> array(&#39;2xp&#39;=>1,&#39;gem&#39;=>120,&#39;bingo&#39;=>51,&#39;keys&#39;=>5,&#39;chest&#39;=>8),
            &#39;gems&#39;=> array(&#39;red&#39;=>13,&#39;green&#39;=>3,&#39;blue&#39;=>8,&#39;yellow&#39;=>17),
            &#39;ctime&#39;=>1376523234,
            &#39;lastLogin&#39;=>1377123144,
            &#39;level&#39;=>112,
            &#39;exp&#39;=>167588,
        )
    );
    
    $uidArr = array(10001,10002);
    if (in_array($uid, $uidArr, true)) {
        $output = array(&#39;data&#39; => NULL, &#39;info&#39;=>&#39;The user does not exist!&#39;, &#39;code&#39; => -402);
        exit(json_encode($output));
    }
    //查询数据库
    $userInfo = $mysql[$uid];
    
    //输出数据
    $output = array(
        &#39;data&#39; => array(
            &#39;userInfo&#39; => $userInfo,
            &#39;isLogin&#39; => true,//是否首次登陆
            &#39;unread&#39; => 4,//未读消息数量
            &#39;untask&#39; => 3,//未完成任务
        ), 
        &#39;info&#39; => &#39;Here is the message which, commonly used in popup window&#39;, //消息提示,客户端常会用此作为给弹窗信息。
        &#39;code&#39; => 200, //成功与失败的代码,一般都是正数或者负数
    );
    exit(json_encode($output));
} elseif ($a == &#39;get_games_result&#39;) {
    //...
    die(&#39;您正在调 get_games_result 接口!&#39;);
} elseif ($a == &#39;upload_avatars&#39;) {
    //....
    die(&#39;您正在调 upload_avatars 接口!&#39;);
}

對客戶端而言,直接呼叫這樣的位址:

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相關知識,請造訪PHP中文網

以上是php專案中的介面怎麼寫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

相關文章

看更多