php面向对象之app接口文档

简介

什么时候需要写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:返回数据;

③判断状态码是否正确;

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

<?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;
    }
}

$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数据,用字符组装

<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";
        $xml.="<message>数据返回返回</message>\n";
 $xml.="</root>"; echo $xml; }

?>

 封装xml通信接口: 

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

②判断状态码是否正确;

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

④访问成功,返回数据;

<?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);

?>

综合方式封装接口

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

<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; } }

 






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值