• 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":"u6210u529fu54af","data":{"id":1,"name":"jiang"}}
    

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

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

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

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

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

    <?php
    
    namespace MiaoxinghwService;
    
    use miaoxingpluginBaseModel;
    
    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'?>
    ";
            $xml .= "<root>
    ";
            $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}>
    ";
            }
            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

    仅供自己学习,特此记录

  • 相关阅读:
    Envoy
    Redis 使用总结
    kafka(一)
    docker搭建kafka环境&&Golang生产和消费
    docker-composer +Grafana+Prometheus系统监控之Redis
    Docker基础命令
    connection pool exhausted
    golang 单元测试&&性能测试
    golang http 中间件
    golang 函数的特殊用法
  • 原文地址:https://www.cnblogs.com/chenhaoyu/p/8797366.html
Copyright © 2020-2023  润新知