app接口总结

一:app接口简介
那么首先app通信接口需要有三部分
1、接口地址(它的作用就是为了让客户端发送请求的)
2、接口文件(处理一些逻辑业务)
3、接口数据
二:客户端通信
当用户点击一个功能的时候就会去访问一个接口地址,这个接口就会返回一些xml或json的数据
三:xml 格式的数据和json格式的数据的区别
1、从可读性方面来说xml格式的数据更加的清晰而json格式的数据看起来相对就比较乱了
2、从生成数据方面json格式的数据是比较简单的它只用一个函数:json_encode()就可以实现了。而xml格式的数据就比较麻。
3、从数据传输速度方面来说json格式的数据比较快
四:app接口做的那些事
从数据库或缓存中获取数据,然后通过接口数据返回给客户端
通过接口提交数据给服务器,然后服务器入库处理,或做其他处理
五:json方式封装通信接口
创建接口文件Response.php

<?php
class Response{
    /*
    *按json方式输出数据
    *@param integer $code 状态码
    *@param string $message 提示信息
    *@param array $data 数据
    */
        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);
        }
}

接下来测试我们接口

<?php
    require_once('./Response.php');
    $arr=array(
            'name'=>"wty",
            'age' =>19
        );
    Response::json('200',"数据返回成功",$arr);

测试成功返回如下格式的数据

{"code":"200","message":"\u6570\u636e\u8fd4\u56de\u6210\u529f","data":{"name":"wty","age":19}}

六:xml方式封装通信接口
首先我们了解一下如何生成xml格式的数据
我们可以使用系统类也可以用字符组装
系统类:DomDocument 、 XMLWriter、 SimpleXML
简单介绍一个系统类:

$xml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8" ?><xmm></xmm>');
        $xml->WTY="";
        $xml->WTY->tile="标题";
        $xml->WTY->url="地址";

我们做xml的通信接口用字符组装的方式来实现

    /*
    *按json方式输出数据
    *@param integer $code 状态码
    *@param string $message 提示信息
    *@param array $data 数据
    */
public static function xml($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'?>";
    $xml.="<wty>";
    $xml.=self::xmlEncdoe($result);
    $xml.="</wty>";    
    echo $xml;
}
    public static function xmlEncdoe($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::xmlEncdoe($value):$value;
            $xml.="</".$key.">";
        }
        return $xml;
    }
}
//测试下
    $arr=array(
            'name'=>"wty",
            'age' =>19,
            'hao' =>array(1,2,3)
        );
    Response::xml('200',"数据返回成功",$arr);

输出如下格式的数据

<wty>
<code>200</code>
<message>数据返回成功</message>
<data>
<name>wty</name>
<age>19</age>
<hao>
<item id="0">1</item>
<item id="1">2</item>
<item id="2">3</item>
</hao></data>
</wty>

xml和json格式数据的接口都分装好后那我们把它们两个结合起来

<?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::xml($code,$message,$data);
        exit;       
    }
}

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


public static function xml($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'?>";
    $xml.="<wty>";
    $xml.=self::xmlEncdoe($result);
    $xml.="</wty>";    
    echo $xml;
}
public static function xmlEncdoe($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::xmlEncdoe($value):$value;
            $xml.="</".$key.">";
        }
        return $xml;
    }
}

测试test.php

<?php
require_once('./Response.php');
$arr=array(
            'name'=>"wty",
            'age' =>19,
            'hao' =>array(1,2,3)
        );
Response::show('200',"数据返回成功",$arr);

测试时访问test.php?format=xml
返回xml格式的数据
访问test.php?format=json
返回jsonl格式的数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值