乙個嚴謹的介面呼叫

2022-01-29 22:01:49 字數 2132 閱讀 7991

* 根據介面名稱返回介面物件。

* * -- 1、介面名稱轉類名稱規則:user.login = userloginapi

* -- 2、當 method 引數為空的時候,要丟擲異常給呼叫的人捕獲處理。

** @param array $apidata 請求來的所有引數。

* @throws exception

* @return api

*/public static function factory(&$apidata)

if (!isset($reqparams['v']) || strlen($reqparams['v']) === 0)

}if (!isset($reqparams['timestamp']) || strlen($reqparams['timestamp']) === 0)

// [3] 將 method 引數轉換為實際的介面類名稱。

$apiname = $reqparams['method'];

$params = explode('.', $apiname);

$classname = '';

foreach ($params as $param)

// 1.0.0 => v1_0_0

$version = str_replace('.', '', $reqparams['v']);

// [4]

$apidir = self::apidir($reqparams['method']);

if (strlen($apidir) > 0) \\";

}// [6] ip 限制判斷。

$ip = ip::ip();

$bool = apiauth::checkipallowaccess($apidetail, $ip);

if ($bool == false)

// [7] 對映介面類。

$classname = "\\apis\\\\v\\api";

if (strlen($apiname) && class_exists($classname)) else

}

/**

* 構造方法。

** @param array $data 所有請求過來的引數。

* @param string $apitype api 介面型別。

* @param string $apikey 介面標識。

* @param string $apisecret 介面金鑰。

** -- 1、合併提交的引數。

* -- 2、呼叫許可權判斷。

* -- 3、簽名驗證。

* -- 4、引數格式判斷。

* -- 5、執行介面邏輯。

*/public function __construct(&$data, $apitype, $apikey = '', $apisecret = '')

/**

* 驗證碼請求簽名。

* * @param array $params 請求引數。

* @param string $apisecret api 金鑰。

** @return bool

*/public static function checksign($params, $apisecret)

"; // 非陣列的值才能進行簽名。}}

$str = $str . $apisecret;

$oksign = strtoupper(md5($str));

if (strlen($sign) === 0 || $sign != $oksign) }}

各種驗證,太可怕了。

做乙個思維嚴謹的人

近期。在網易公開課上找了個哲學入門的課看了看,聽懂多少不是重點,記住多少不是重點。那麼,重點是什麼呢?學習一種思考問題的方式,更清楚的認識自己,技術的學習要遠遠易於認識自己。以下我將給大家分享兩個比較有意思的論證 靈魂的永恆和死亡是否對你有害這兩個論證。靈魂是否是永恆的呢?先來看下蘇格拉底的論證 1...

乙個簡單而嚴謹的單例建立方法

單例模式是一種古老而常用的設計模式,相信大家都已經能熟練編寫單例 我在這裡不再贅述單例的實現。大部分情況下,我們的單例都是主線程使用,所以這裡暫時不考慮執行緒同步問題。不考慮同步問題的情況下,單例一般的書寫方式如下 instancetype sharedinstance return instanc...

分享乙個PHP呼叫RestFul介面的函式

php越來越前端化,大型系統中的php經常是呼叫後端服務的介面,這裡分享乙個函式。希望對大家有用。http 呼叫介面函式 date 2016 07 11 author georgehao param string url 介面位址 param array params 陣列 param string...