標籤:get 如何 ring catch style 資料格式 監控 elf div
如何寫好介面
- 目的:清楚明白所寫介面的用途
- 安全性:做好介面的安全性,防止介面資料泄露,做好必要的參數加密措施
- 按需分配: 接受值和傳回值要實用,不接受和返回不需要的資料,傳回值返回什麼應與使用者時時溝通
- 規範性:參數命名規範有意義,讓使用者一目瞭然;傳回值要包含調用介面狀態資訊,返回資料格式最好使用JSON
- 日誌:寫介面調用日誌,方便查到介面調用錯誤,實現監控和對接快捷
介面安全性與規範性參考
/** * 使用者登入介面 * 請求方式:post * 接受參數: * @param $mobile 使用者名稱 -- 可逆 通過 urlencode(base64_encode()) 加密 * @param $pwd 加密密碼 -- 可逆,同時定義一個加密規則 * return json * {"code":int,"message":string,"data":array} * 注意事項: * */ public function login() { $mobile = isset($_POST[‘mobile‘]) ? base64_decode(urldecode(escapeQuotes($_POST[‘mobile‘]))) : ‘‘; $pwd = isset($_POST[‘pwd‘]) ? escapeQuotes($_POST[‘pwd‘]) : ‘‘; $totp = isset($_POST[‘ttoken‘]) ? escapeQuotes($_POST[‘ttoken‘]) : ‘‘; $commonmodel = self::getModel(‘common‘); try { // 檢查參數 $commonmodel->checkRight($mobile, ‘mobile‘); $commonmodel->checkRight($pwd, ‘pwd‘); $commonmodel->checkRight($totp, ‘ttoken‘); // 驗證登入 $usersmodel = self::getModel(‘users‘); $res = $usersmodel->userLogin($mobile, $pwd); } catch (Exception $e) { $res = array( ‘code‘ => 10000, ‘message‘ => $e->getMessage() ); } // 寫入介面日誌 $des = "IP:" . getIp() . ";請求使用者登入介面;返回:" . $res[‘message‘]; $commonmodel->logResult(‘10001‘, $res[‘code‘], $des); echo json_encode($res); }
接受的參數,比如使用者名稱和密碼都進行了加密處理,密碼可以定義一個更安全的加密規則,抓包查看請求參數也不會暴露使用者資料。
調用介面寫好介面日誌,記錄調用什麼介面,返回狀態代碼,介面返回詳情等等。。。
傳回值參考
{ code:0, message: "success", data: { key1: value1, key2: value2, ... }}
- code: 返回狀態代碼,1表示成功,非1表示各種不同的錯誤,10000可以用來表示用戶端傳參錯誤
- message: 描述資訊,成功時為”success”,錯誤時則是錯誤資訊
- data: 成功時返回的資料,類型為對象或數組
不同錯誤就要定義不同的返回狀態代碼,這裡舉個例子:
狀態代碼表
傳回值 說明
10000 執行異常,一般為用戶端傳參出錯
10001 使用者不存在
10002 密碼錯誤
10003 使用者狀態未啟用
10004 redis儲存值錯誤
10005 令牌(token)錯誤
10006 二維碼序列錯誤
10007 驗票錯誤
1 驗證成功,返回需要資訊
10000可以定義為用戶端傳入的參數有錯,直接拋出異常,區別用戶端與服務端之間的錯誤
本文轉載至:http://blog.csdn.net/xwh670570759/article/details/52130585
【轉載】php如何給APP端寫介面