這篇文章運用簡單易懂的例子給大家介紹如何實現(xiàn)PHP開發(fā)APP接口,代碼非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
創(chuàng)新互聯(lián)長期為成百上千客戶提供的網(wǎng)站建設(shè)服務,團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為五原企業(yè)提供專業(yè)的網(wǎng)站設(shè)計、網(wǎng)站制作,五原網(wǎng)站改版等技術(shù)服務。擁有十載豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
1、學習要點:
服務器端 –> 數(shù)據(jù)庫|緩存 –>調(diào)用接口 –>客戶端
2、APP接口介紹:(PHP開發(fā)APP接口)
PHP面向?qū)ο蟮慕涌冢撼橄箢?,interface定義 ==>interface.php
===>1.很規(guī)范
APP接口(通信接口):通過接口得到數(shù)據(jù),將數(shù)據(jù)填充到APP中
—>APP開發(fā)人員關(guān)注:請求APP地址(接口地址)+返回數(shù)據(jù)
APP(通信)接口定義:
1.接口地址:http://app.com/api.php?format=xml
2.接口文件:app.php處理一些業(yè)務邏輯
3.接口數(shù)據(jù)
3.客戶端APP通信:
APP是如何進行通信的:
C (接口地址:http://app.com/api.php?format=xml/json) S 客戶端APP ------------------------------> 服務器 <----------------------------- 返回數(shù)據(jù)
4.客戶端APP通信格式區(qū)別
1.xml:擴展標記語言(1.用來標記數(shù)據(jù),定義數(shù)據(jù)類型,是一種允許用戶對自己的標記語言進行定義的源語言,xml格式統(tǒng)一,跨平臺和語言,非常適合數(shù)據(jù)傳輸和通信,早已成為業(yè)界公認的標準)
測試 測試oen 深圳
2.json:一種清涼級別的數(shù)據(jù)交換格式,具有良好的可讀和便于快速編寫的特性,可在不同平臺證件進行數(shù)據(jù)交換,JSON采用兼容性很高的,完全獨立于語言文本格式。這種特性使JSON成為理想的數(shù)據(jù)交換語言。
XML的可讀性要好,JSON的生成數(shù)據(jù)性 (json_encode(數(shù)組)) 傳輸速度方面要好
5.APP接口做的那些事:
獲取數(shù)據(jù):從數(shù)據(jù)庫中或緩存中獲取數(shù)據(jù),然后通過接口數(shù)據(jù)返回客戶端
提交數(shù)據(jù):通過接口提交數(shù)據(jù)給服務器,然后通過服務器入庫處理,或者其他處理
6.JSON方式封裝通信接口
PHP生成json數(shù)據(jù):json_encode($arr);
注釋:該函數(shù)只能接受UTF-8編碼的數(shù)據(jù),如果傳遞其他格式的數(shù)據(jù)該函數(shù)會返回null
通信數(shù)據(jù)標注格式:
code 狀態(tài)碼(200 400等) message 提示信息(郵箱格式不正確;數(shù)據(jù)返回成功等) data 返回相應的數(shù)據(jù) —————————- -JSON code : 200 message :”數(shù)據(jù)返回成功” -data id :1 name : “測試”
實例:
某個server中: public function json($code,$message = '',$data = array()) { if (!is_numeric($code)){ return '錯誤'; } $result = array( 'code' => $code, 'message' => $message, 'data' => $data ); echo json_encode($result); exit; }
某個Controller:
public function jsonsAction() { $arr = array( 'id' => 1, 'name' => 'jiang' ); $k = wei()->zhwCategory()->json(200,'成功咯',$arr); return $k; }
瀏覽器:http://127.0.0.1/admin/zhw-categorys/jsons
{"code":200,"message":"\u6210\u529f\u54af","data":{"id":1,"name":"jiang"}}
7.PHP生成XML數(shù)據(jù):
7.1PHP生成XML數(shù)據(jù)
1.組裝字符串
2.使用系統(tǒng)類:DomDocument
XMLWriter
SimpleXML
如用DomDocument:
createElement('test','This id root element'); $dom->appendChild($element); echo $dom->saveXML(); ?>
====>結(jié)果:
This is the root element
使用組裝字符串的簡單實例性:
public static function xml() { header("Content-Type:text/html"); $xml = "\n"; $xml .= "\n"; $xml .= " 200
\n"; $xml .= "數(shù)據(jù)返回成功 \n"; $xml .= "\n"; $xml .="1 \n"; $xml .="測試 \n"; $xml .="\n"; $xml .=""; echo $xml; }
7.2封裝XML數(shù)據(jù)方法: 封裝方法:xmlEncode($code,$message='',$data = array()); data數(shù)據(jù)分析: 1.array('index' => 'api'); 2.array(1,7.89); 具體: server模塊下:
public function xmlEncode($code,$message = '',$data=array()) { if(!is_numeric($code)){ return "錯誤"; } $result = array( 'code' => $code, 'message' => $message, 'data' => $data, ); header("Content-Type:text/xml"); $xml = "\n"; $xml .= "\n"; $xml .=self::xmlToEncode($result); $xml .=" "; echo $xml; }
//對數(shù)據(jù)再處理
public function xmlToEncode($data){ $xml = $attr =""; foreach ($data as $key=>$value){ if(is_numeric($key)){ $attr = "id='{$key}'"; $key = "item"; } $xml .= "<{$key} {$attr}>"; //它們{$key} {$attr}之間要有一個小空格 $xml .=is_array($value) ? self::xmlToEncode($value):$value; $xml .="{$key}>\n"; } return $xml; }
某個Controller:
public function xmlsAction() { $arr = array( 'id' => 1, 'name' => 'jiang', 'type' =>array(4,5,6), 'test' =>array(1,45,67=>array(1,2,3)), ); $k = wei()->zhwCategory()->xmlEncode(200,'成功咯',$arr); return $k; }
8.綜合方式封裝通信數(shù)據(jù)方法:
封裝方法:show($code,$message,$data=array(),$type='json/xml')
最終頁面:
server:
$code, 'message' => $message, 'data' => $data, ); if($type == 'json'){ self::json($code,$message,$data); exit; }elseif($type == 'array'){ var_dump($result); }elseif ($type == 'xml'){ self::xmlEncode($code,$message,$data); exit; }else{ //TODO } } /** * 按json方式輸出通信數(shù)據(jù) * @param integer $code 狀態(tài)碼 * @param string $message 提示信息 * @param array $data 數(shù)據(jù) * return string */ public function json($code,$message = '',$data = array()) { if (!is_numeric($code)){ return '錯誤'; } $result = array( 'code' => $code, 'message' => $message, 'data' => $data ); echo json_encode($result); exit; } /** * 按xml方式輸出通信數(shù)據(jù) * @param integer $code 狀態(tài)碼 * @param string $message 提示信息 * @param array $data 數(shù)據(jù) * return string */ public function xmlEncode($code,$message = '',$data=array()) { if(!is_numeric($code)){ return "錯誤"; } $result = array( 'code' => $code, 'message' => $message, 'data' => $data, ); header("Content-Type:text/xml"); $xml = "\n"; $xml .= "\n"; $xml .=self::xmlToEncode($result); $xml .=" "; echo $xml; } //對數(shù)據(jù)再處理 public function xmlToEncode($data){ $xml = $attr =""; foreach ($data as $key=>$value){ if(is_numeric($key)){ $attr = "id='{$key}'"; $key = "item"; } $xml .= "<{$key} {$attr}>"; $xml .=is_array($value) ? self::xmlToEncode($value):$value; $xml .="{$key}>\n"; } return $xml; } }
Controller: public function jsonsAction() { $arr = array( 'id' => 1, 'name' => 'jiang' ); $k = wei()- >zhwCategory()->json(200,'成功咯',$arr); return $k; } public function xmlsAction() { $arr = array( 'id' => 1, 'name' => 'jiang', 'type' =>array(4,5,6), 'test' =>array(1,45,67=>array(1,2,3)), ); $k = wei()->zhwCategory()->xmlEncode(200,'成功咯',$arr); return $k; } public function showAction() { $arr = array( 'id' => 1, 'name' => 'jiang', 'type' =>array(4,5,6), 'test' =>array (1,45,67=>array(1,2,3)), ); $k = wei()->zhwCategory()->show(200,'成功咯',$arr,'json'); return $k;
關(guān)于如何實現(xiàn)PHP開發(fā)APP接口就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。