首先说明一下客户端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

仅供自己学习,特此记录

PHP开发APP接口之返回数据的更多相关文章

  1. 《PHP开发APP接口》笔记

    PHP开发APP接口 [TOC] 课程地址 imooc PHP开发APP接口 学习要点 APP接口简介 封装通信接口方法 核心技术 APP接口实例 服务器端 -> 数据库|缓存 -> 调用 ...

  2. PHP开发APP接口(二)

    这里将会调用前面博客的数据库连接单例.文件缓存类和开发APP接口(一) <?php // http://app.com/list.php?page-=1&pagesize=12 requ ...

  3. charles_01_打断点修改接口请求&返回数据

    前言 测试过程中,为了模拟某场景测试,经常需要修改接口请求或者返回数据.可通过抓包工具打断点,实现模拟测试场景.常用的抓包工具charles和fiddler均可打断点mock数据.由于小编安装了cha ...

  4. PHP开发APP接口---返回数据的封装类

    参考视频http://www.imooc.com/learn/163 <?php /** * app返回数据类 * 1.接受多维,缺少键名的数组, * 2.可由输入的format参数决定返回数据 ...

  5. PHP开发APP接口学习笔记

    习要点概述1.APP接口简介 2.封装通信接口方法 3.核心技术 4.APP接口实例 服务器和客户端进行接口数据通信:服务器 -->数据库|缓存 -->调用接口 -->客户端 服务器 ...

  6. PHP开发APP接口实现--基本篇

    最近一段时间一直在做APP接口,总结一下APP接口开发以来的心得,与大家分享: 1. 客户端/服务器接口请求流程: 安卓/IOS客户端   –> PHP接口 –> 服务器端  –> ...

  7. PHP开发APP接口

    第1章 APP接口简介 - 课程简介 (:) - APP接口介绍 (:) - 客户端APP通信 (:) 最近学习 - 客户端APP通信格式区别 (:) - APP接口做的哪些事儿 (:) 第2章 封装 ...

  8. PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [2] 首页 APP 接口开发方案 ① 读取数据库方式

    方案一:读取数据库方式 从数据库读取信息→封装→生成接口数据 应用场景: 数据时效性比较高的系统 方案二:读取缓存方式 从数据库获取信息(第一次设置缓存或缓存失效时)→封装(第一次设置缓存或缓存失效时 ...

  9. PHP开发APP接口(一)

    php以json或者xml 形式返回给app.明白这点就很好说了,就是把数据包装成json或者xml,返回给APP 定义抽象APP基类: <?php /** * 定义API抽象类 */ abst ...

随机推荐

  1. CDH 6.0.1 集群搭建 「Process」

    这次搭建我使用的机器 os 是 Centos7.4 RH 系的下面以流的方式纪录搭建过程以及注意事项 Step1: 配置域名相关,因为只有三台机器组集群,所以直接使用了 hosts 的方法: 修改主机 ...

  2. Centso7 简单优化(阿里云服务器)

    ##.下载常用包 # yum -y install wget net-tools screen lsof tcpdump nc mtr openssl-devel vim bash-completio ...

  3. 一、Composer

    一.Composer -依赖管理工具 Composer 会帮你安装这些依赖的库文件

  4. fftshift

    说明:本文为转载http://blog.csdn.net/myathappy/article/details/51344618 Matlab fftshift 详解 一.实信号情况 因为实信号以fs为 ...

  5. Microsoft Bot Framework with LUIS

    今年微软的编程之美的主题是“对话即平台”,“人工智能”,要求参赛选手用到Bot Framework与Cognitive Services. 大多数人应该对这两个技术都不怎么熟悉吧,我就在这里写写自己所 ...

  6. java 中的包概念

    Java 中的包package, 就是电脑中的文件夹.我们平时在工作中,文件太多时,都会新建文件夹进行分类管理,java 中的包也是类似的道理,当我们的类太多时,也需要进行分类管理,这时我们就会把类文 ...

  7. Nginx 当上游服务器返回失败时的处理办法

    陶辉95课 Syntax: proxy_next_upstream error | timeout | invalid_header | http_500 | http_502 | http_503  ...

  8. BZOJ3230 相似子串 【后缀数组】

    题目分析: 容易想到sa排好序之后,子串排名就是前面的子串减去height数组.所以正着做一遍,倒着做一遍就行了. 代码: #include<bits/stdc++.h> using na ...

  9. ios-deploy was not found

    Ionic 打包ios的时候,突然报错,提示如下: (node:1157) UnhandledPromiseRejectionWarning: ios-deploy was not found. Pl ...

  10. nswl 收集日志

    nswl 收集日志 参考链接:https://docs.citrix.com/en-us/citrix-adc/12-1/system/web-server-logging.html PS C:\Us ...