php做爲服務端的開發語言在app開發中扮演着鏈接客戶端和數據庫的角色,客戶端經過調用由php開發的接口完成對數據庫的操做,php代碼中實現用戶業務邏輯的部分。客戶端須要傳遞一些參數給服務端php,這些參數的格式由客戶端開發人員和服務端開發人員共同協商制定,二者遵循同一套標準,使得雙方之間傳遞的數據可以被正確解析。在實際開發中json格式的數據被普遍用於客戶端和服務端數據的交互,幾乎每種語言都支持json數據的解析,在php中使用json_encode()和json_decode()即可,很是便捷。php
在php爲app開發接口中須要注意如下幾點:mysql
一、數據傳輸建議使用json,json具備很強的跨平臺性,大多編程語言都支持json解析,json正在逐步取代xml,成爲網絡數據的通用格式。web
二、爲了保證接口安全,必定要加入鑑權體系,確保請求php接口的是合法來源。另外對於傳輸的數據也可使用加密技術,本書第20章有講述關於api接口簽名和信息加密的內容。sql
三、對於線上的API,儘可能使用error_reporting(0)關閉錯誤提示,或者把錯誤提示寫入到日誌中,方便往後排查。這樣作的目的,一方面能夠保護接口安全,防止輸出不應打印的錯誤信息,另外一方面是保證輸出的是正確的數據格式,防止輸出錯誤信息被客戶端錯誤解析而出現的接口調用異常。數據庫
四、開發 API 和 WEB 有必定的區別,若是接口返回的格式不規範,被客戶端拿到解析,可能會致使客戶端閃退崩潰等狀況的出現,因此在接口上線以前必定要充分的測試。編程
五、儘量保證php寫出的代碼的性能,手機應用比web應用對響應速度的要求更高,由於用戶手機性能的巨大差別,手機應用在從服務端取到數據後要進行數據重組頁面渲染等會比web應用消耗更多的時間。json
客戶端和服務端之間選定json做爲數據傳輸格式,以後便要約定json中各字段的含義,通常在json數據中定義至少三個字段,分別爲返回狀態碼,返回狀態描述和數據內容。好比一個定義返回用戶信息的的json數據以下:api
{「code":0,"msg":"success","data":{"name":"chenxiaolong","age":"22","gender":"male"}}安全
其中code值爲0表示客戶端這次請求接口成功,msg字段說明這次請求的狀態,與返回狀態碼code對應,data中是客戶端想要取到的具體內容,裏面包含服務端返回的用戶信息。在data字段開發者可根據不一樣的接口須要定義不一樣的字段格式。微信
此接口的簡單代碼示例以下:
function getUserInfo() { $uid = $_REQUEST[‘uid']; $user = new User(); if($data = $user->findByUid($uid) != false) { $this->output($data); } else { $this->output('',1,'invalid uid'); } }
客戶端經過調用getUserInfo接口並傳入用戶的uid參數,php接收該參數到mysql數據庫用戶表裏根據此uid查詢用戶相關信息,其中User是一個封裝的用戶表模型,它提供根據用戶uid查詢用戶信息的findByUid方法,若是查詢到用戶信息就輸出用戶信息,不然返回錯誤信息給到客戶端,此處返回的錯誤狀態碼定義爲1,表示不合法的uid,即在用戶表裏沒有查詢到該uid對應的數據記錄。
接口用到了一個公用output方法,此方法是輸出json數據的具體實現,示例代碼以下:
function output(,$data='',$code=0,$msg='success') { $out = array('code'=$code,'msg'=>$msg,'data'=>$data); echo json_encode($out); }
注意向客戶端返回數據時使用的是echo輸出而不是return。
本文節選自 《php7實踐指南》 陳小龍著
微信掃一掃,發現更多內容