PHP开发APP接口之返回数据

首先说明一下客户端APP通信的格式

1.xml:扩展标记语言(1.用来标记数据,定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言,xml格式统一,跨平台和语言,非常适合数据传输和通信,早已成为业界公认的标准)

<?xml version="1.0" encoding="UTF-8"?>
  <item>
      <title>测试</title>
      <test id="1">
      <description>测试oen</description>
      <address>深圳</address>
  </item>

XML的可读性要好

2、json:一种清凉级别的数据交换格式,具有良好的可读和便于快速编写的特性,可在不同平台证件进行数据交换,JSON采用兼容性很高的,完全独立于语言文本格式。这种特性使JSON成为理想的数据交换语言。

{"code":200,"message":"\u6210\u529f\u54af","data":{"id":1,"name":"jiang"}}

JSON的生成数据性 (json_encode(数组)) 传输速度方面要好

再说一下APP接口做的那些事

获取数据:从数据库中或缓存中获取数据,然后通过接口数据返回客户端 
提交数据:通过接口提交数据给服务器,然后通过服务器入库处理,或者其他处理

最后综合方式封装通信数据方法

封装方法:show($code,$message,$data=array(),$type='json/xml')

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

 

本人转自:https://blog.csdn.net/weixin_38300969/article/details/78341982

仅供自己学习,特此记录

posted @ 2018-04-11 17:55  陈浩宇人呢  阅读(3169)  评论(0编辑  收藏  举报