您的位置:首页 > 移动开发

php面向对象之app接口文档

2016-11-16 15:35 477 查看


简介

什么时候需要写app接口,在app客户端,很多地方需要调用数据,这个时候就需要用接口来调用数据库的数据,在与客户端对接,把数据返回给客户端

数据库->数据库|缓存->调用接口->客户端;


APP接口介绍

app通信接口定义需要三部分:

I:接口地址:如http://app.com/api.PHP?format=xml;

II:接口文件:如api.php处理一些业务逻辑;
III:接口数据;

app如何通讯:

->发送http请求(http://app.com/api.php?format=xml;) ↓

客户端-> <- 服务器

↑ 返回数据 (比较常用的是XML,JSON) <-

XML和JSON格式的区别

XML:扩展标记语言(里面的标签可以自己定义)XML格式统一。跨平台、跨语言。非常适合通信和传输,已成为业界标准。

特点

①必须有一个根节点,且只能有一个根节点,不能有两个。

②结束标签。<test></test> 和<test />都可以

③节点可以自定义

④XML:可读性很高

JSON:是一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.可在不同平台之间进行数据交换.兼容性高,完全独立于语言文本格式.

两种形式:字符串和数组,因为字符串不便于理解一般用数组模式传数据;

特点:

key=>val;{"code":200,"message":"\u6210\u529f\u8fd4\u56de\u6570\u636e","data":{"id":"1","name":"\u5218\u9526\u9f99","type":[4,8,12],"test":{"0":4,"1":44,"88":[2312,"paw"],"name":"hah","asd":"qwe"}}};

JSON:生成数据更方便 只需要json_encode()就可以
JSON:传输速度更快

app接口主要作用:

①获取数据:从数据库或缓存中获取数据,然后通过接口数据返回给客户端.

②提交数据:通过接口提交数据给服务器,然后服务器入库处理等.




JSON方式封装通信接口:

①json数据的转换只需要用一个函数json_encode;(该函数只接受UTF-8编码数据,如果不是则返回空值;)

②通信数据标准格式: code:状态码; message:提示信息; data:返回数据;

③判断状态码是否正确;

④直接调用这个方法,返回数据,则调取接口成功;

[html] view
plain copy







<?php

class Response{

<pre name="code" class="html">② public static function json($code,$message='',$data=array()){

③ if(!is_numeric($code)){

return '';

}

$result=array(

'code' => $code,

'message' => $message,

'data' => $data,

);

① echo json_encode($result);

exit;

}

}

[html] view
plain copy







$data=array(

'id' => '1',

'name' => '刘锦龙',

'type' => array(4,8,12),

'test' => array(4,44,88=>array(2312,'paw'),'name'=>'hah','asd'=>'qwe'),

);

④Response::json(200,'成功返回数据',$data);

?>




XML方式封装通信接口:

首先学习一下生成XML数据,用字符组装

[html] view
plain copy







<pre name="code" class="html"><?php

class Response{

public static function xml(){ header("Content-Type:text/xml");//转换访问类型 $xml="<?xml version='1.0' encoding='UTF-8'?>\n";//xml头信息 $xml.="<root>\n"; $xml.="<code>200</code>\n";

[html] view
plain copy







$xml.="<message>数据返回返回</message>\n";

$xml.="</root>"; echo $xml; }

?>


封装xml通信接口:

①封装方式和json方法类似;首先需要通信数据标准格式: code:状态码; message:提示信息; data:返回数据;

②判断状态码是否正确;

③为了正确显示数组数据,需要封装一个方法来处理数组,xmlToEncode;

④访问成功,返回数据;

[html] view
plain copy







<?php

class Response{

public static 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>\n";

echo $xml;

}

③ public static function xmlToEncode($data){

$xml=$attr='';

foreach($data as $key => $value ){

if(is_numeric($key)){

$attr=" id='$key'";

$key='item';

}else{

$attr="";

}

$xml.="<{$key}{$attr}>";

$xml.=is_array($value)?self::xmlToEncode($value):$value;

$xml.="</{$key}>\n";

}

return $xml;

}

};

$data=array(

'id' => '1',

'name' => '刘锦龙',

'type' => array(4,8,12),

'test' => array(4,44,88=>array(2312,'paw'),'name'=>'hah','asd'=>'qwe'),

);

④Response::show(200,'成功返回数据',$data);

?>


综合方式封装接口

为了区分需要返回的接口类型;在访问之前先判断一下类型再调用;

[html] view
plain copy







<pre name="code" class="html"><?php

class Response{

const JSON='json'; public static function show($code,$message='',$data=array(),$type=self::JSON){ if(!is_numeric($code)){ return ''; } $type=isset($_GET['format'])?$_GET['format']:self::JSON;
$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); }else{ //TODO;
} }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: