php面向对象之app接口文档

本文介绍了PHP中面向对象编程应用于APP接口的设计,包括JSON和XML两种通信接口的封装方法。通过Response类展示了如何创建接口,处理数据并返回给客户端。接口主要用于数据的获取和提交,通过状态码、消息和数据进行交互。
摘要由CSDN通过智能技术生成

简介

什么时候需要写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
  在CODE上查看代码片 派生到我的代码片
  1. <?php  
  2. class Response{  
  3. <pre name="code" class="html">② public static function json($code,$message='',$data=array()){  
  4. ③       if(!is_numeric($code)){  
  5.             return '';  
  6.         }  
  7.         $result=array(  
  8.             'code' => $code,  
  9.             'message' => $message,  
  10.             'data' => $data,  
  11.         );  
  12. ①       echo json_encode($result);  
  13.         exit;  
  14.     }  
}

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. $data=array(  
  2.     'id' => '1',  
  3.     'name' => '刘锦龙',  
  4.     'type' => array(4,8,12),  
  5.     'test' => array(4,44,88=>array(2312,'paw'),'name'=>'hah','asd'=>'qwe'),  
  6. );  
  7. ④Response::json(200,'成功返回数据',$data);  


?>

 

XML方式封装通信接口:

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

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <pre name="code" class="html"><?php  
  2. 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
  在CODE上查看代码片 派生到我的代码片
  1. $xml.="<message>数据返回返回</message>\n";  
 $xml.="</root>"; echo $xml; }

?>

 
封装xml通信接口: 

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

②判断状态码是否正确;

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

④访问成功,返回数据;

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <?php  
  2. class Response{  
  3.     public static function xmlEncode($code,$message,$data=array()){  
  4. ②        if(!is_numeric($code)){  
  5.             return '';  
  6.         }  
  7.         $result=array(  
  8.             'code' => $code,  
  9.             'message' => $message,  
  10.             'data' => $data,  
  11.         );  
  12.         header("Content-Type:text/xml");  
  13.         $xml="<?xml version='1.0' encoding='UTF-8'?>\n";  
  14.         $xml.="<root>\n";  
  15.         $xml.=self::xmlToEncode($result);  
  16.         $xml.="</root>\n";  
  17.         echo $xml;  
  18.     }  
  19.   
  20. ③    public static function xmlToEncode($data){  
  21.         $xml=$attr='';  
  22.         foreach($data as $key => $value ){  
  23.             if(is_numeric($key)){  
  24.                 $attr=" id='$key'";  
  25.                 $key='item';  
  26.             }else{  
  27.                 $attr="";  
  28.             }  
  29.             $xml.="<{$key}{$attr}>";  
  30.             $xml.=is_array($value)?self::xmlToEncode($value):$value;  
  31.             $xml.="</{$key}>\n";  
  32.         }  
  33.         return $xml;  
  34.     }  
  35.   
  36. };  
  37. $data=array(  
  38.     'id' => '1',  
  39.     'name' => '刘锦龙',  
  40.     'type' => array(4,8,12),  
  41.     'test' => array(4,44,88=>array(2312,'paw'),'name'=>'hah','asd'=>'qwe'),  
  42. );  
  43. ④Response::show(200,'成功返回数据',$data);  
  44.   
  45. ?>  

综合方式封装接口

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

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <pre name="code" class="html"><?php  
  2. 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; } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值