php專案中的介面怎麼寫

2020-07-16 10:06:42

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

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

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

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

資料怎麼返給用戶端?

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

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

臨時寫的一個簡單 API 例子:

<?php
// 設定json格式
header('content-type:application/json;charset=utf-8');
$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,
        )
    );
    
    $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));
    }
    //查詢資料庫
    $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://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專案中的介面怎麼寫的詳細內容,更多請關注TW511.COM其它相關文章!