PHP开辟APP接口全过程(一)【php教程】,PHP,APP
服务器端 –> 数据库|缓存 –>挪用接口 –>客户端
2、APP接口引见:(PHP开辟APP接口)
PHP面向对象的接口:抽象类,interface定义 ==>interface.php
===>1.很范例
APP接口(通讯接口):经由过程接口获得数据,将数据填充到APP中
—>APP开辟人员关注:要求APP地点(接口地点)+返回数据
APP(通讯)接口定义:
1.接口地点:http://app.com/api.php?format=xml
2.接口文件:app.php处置惩罚一些营业逻辑
3.接口数据
(引荐进修:PHP视频教程)
3.客户端APP通讯:
APP是怎样举行通讯的:
C (接口地点:http://app.com/api.php?format=xml/json) S 客户端APP ------------------------------> 服务器 <----------------------------- 返回数据
4.客户端APP通讯花样区分
1.xml:扩大标记言语(1.用来标记数据,定义数据类型,是一种许可用户对本身的标记言语举行定义的源言语,xml花样一致,跨平台和言语,异常合适数据传输和通讯,早已成为业界公认的规范)
<?xml version="1.0" encoding="UTF-8"?> <item> <title>测试</title> <test id="1"> <description>测试oen</description> <address>深圳</address> </item>
2.json:一种清冷级别的数据交换花样,具有优越的可读和便于疾速编写的特征,可在差别平台证件举行数据交换,JSON采纳兼容性很高的,完整独立于言语文本花样。这类特征使JSON成为抱负的数据交换言语。
XML的可读性要好,JSON的生成数据性 (json_encode(数组)) 传输速率方面要好
5.APP接口做的那些事:
猎取数据:从数据库中或缓存中猎取数据,然后经由过程接口数据返回客户端
提交数据:经由过程接口提交数据给服务器,然后经由过程服务器入库处置惩罚,或许其他处置惩罚
6.JSON体式格局封装通讯接口
PHP生成json数据:json_encode($arr);
解释:该函数只能接收UTF-8编码的数据,假如通报其他花样的数据该函数会返回null
通讯数据标注花样:
code 状况码(200 400等) message 提醒信息(邮箱花样不正确;数据返回胜利等) data 返回响应的数据 —————————- -JSON code : 200 message :”数据返回胜利” -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数据:
7.1PHP生成XML数据
1.组装字符串
2.运用体系类:DomDocument
XMLWriter
SimpleXML
如用DomDocument:
<?php $dom = new DomDocument('1.0','utf-8'); $element = $dom->createElement('test','This id root element'); $dom->appendChild($element); echo $dom->saveXML(); ?>
====>效果:
<?xml version="1.0" encoding="utf-8"?> <test>This is the root element</test>
运用组装字符串的简朴实例性:
public static function xml() { header("Content-Type:text/html"); $xml = "<?xml version='1.0' encoding='UTF-8'?>\n"; $xml .= "<root>\n"; $xml .= "<code>200</code>\n"; $xml .= "<message>数据返回胜利</message>\n"; $xml .= "<data>\n"; $xml .="<id>1</id>\n"; $xml .="<name>测试</name>\n"; $xml .="</data>\n"; $xml .="<root>"; echo $xml; }
7.2封装XML数据要领: 封装要领:xmlEncode($code,$message='',$data = array()); data数据剖析: 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 = "<?xml version='1.0' encoding='UTF-8'?>\n"; $xml .= "<root>\n"; $xml .=self::xmlToEncode($result); $xml .="</root>"; echo $xml; }
//对数据再处置惩罚
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.综合体式格局封装通讯数据要领:
封装要领:show($code,$message,$data=array(),$type='json/xml')
终究页面:
server:
<?php namespace Miaoxing\Zhw\Service; use miaoxing\plugin\BaseModel; class ZhwCategory extends BaseModel { const JSON = "json"; /** * 按x综合体式格局输出通讯数据 * @param integer $code 状况码 * @param string $message 提醒信息 * @param array $data 数据 * @param string $type 数据类型 * return string */ public function show($code,$message='',$data=array(),$type = self::JSON) { if (!is_numeric($code)){ return "毛病编码"; } $result = array( 'code' => $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体式格局输出通讯数据 * @param integer $code 状况码 * @param string $message 提醒信息 * @param array $data 数据 * 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体式格局输出通讯数据 * @param integer $code 状况码 * @param string $message 提醒信息 * @param array $data 数据 * 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 = "<?xml version='1.0' encoding='UTF-8'?>\n"; $xml .= "<root>\n"; $xml .=self::xmlToEncode($result); $xml .="</root>"; echo $xml; } //对数据再处置惩罚 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; }
以上就是PHP开辟APP接口全过程(一)的细致内容,更多请关注ki4网别的相干文章!