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
仅供自己学习,特此记录
PHP开发APP接口之返回数据的更多相关文章
- 《PHP开发APP接口》笔记
PHP开发APP接口 [TOC] 课程地址 imooc PHP开发APP接口 学习要点 APP接口简介 封装通信接口方法 核心技术 APP接口实例 服务器端 -> 数据库|缓存 -> 调用 ...
- PHP开发APP接口(二)
这里将会调用前面博客的数据库连接单例.文件缓存类和开发APP接口(一) <?php // http://app.com/list.php?page-=1&pagesize=12 requ ...
- charles_01_打断点修改接口请求&返回数据
前言 测试过程中,为了模拟某场景测试,经常需要修改接口请求或者返回数据.可通过抓包工具打断点,实现模拟测试场景.常用的抓包工具charles和fiddler均可打断点mock数据.由于小编安装了cha ...
- PHP开发APP接口---返回数据的封装类
参考视频http://www.imooc.com/learn/163 <?php /** * app返回数据类 * 1.接受多维,缺少键名的数组, * 2.可由输入的format参数决定返回数据 ...
- PHP开发APP接口学习笔记
习要点概述1.APP接口简介 2.封装通信接口方法 3.核心技术 4.APP接口实例 服务器和客户端进行接口数据通信:服务器 -->数据库|缓存 -->调用接口 -->客户端 服务器 ...
- PHP开发APP接口实现--基本篇
最近一段时间一直在做APP接口,总结一下APP接口开发以来的心得,与大家分享: 1. 客户端/服务器接口请求流程: 安卓/IOS客户端 –> PHP接口 –> 服务器端 –> ...
- PHP开发APP接口
第1章 APP接口简介 - 课程简介 (:) - APP接口介绍 (:) - 客户端APP通信 (:) 最近学习 - 客户端APP通信格式区别 (:) - APP接口做的哪些事儿 (:) 第2章 封装 ...
- PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [2] 首页 APP 接口开发方案 ① 读取数据库方式
方案一:读取数据库方式 从数据库读取信息→封装→生成接口数据 应用场景: 数据时效性比较高的系统 方案二:读取缓存方式 从数据库获取信息(第一次设置缓存或缓存失效时)→封装(第一次设置缓存或缓存失效时 ...
- PHP开发APP接口(一)
php以json或者xml 形式返回给app.明白这点就很好说了,就是把数据包装成json或者xml,返回给APP 定义抽象APP基类: <?php /** * 定义API抽象类 */ abst ...
随机推荐
- 报错:ch.qos.logback.core.joran.spi.JoranException
项目中使用了maven. 1.找到本地仓库,删除ch文件夹 2.对项目执行maven install 3.在更新下项目maven update
- word2vec训练&IC分词(待)
参考http://www.52nlp.cn/%E4%B8%AD%E8%8B%B1%E6%96%87%E7%BB%B4%E5%9F%BA%E7%99%BE%E7%A7%91%E8%AF%AD%E6%96 ...
- oracle ceil函数
ceil和floor函数在一些业务数据的时候,有时还是很有用的. ceil(n) 取大于等于数值n的最小整数: floor(n)取小于等于数值n的最大整数 如下例子 SQL> select ce ...
- How to goproxy
brew install python python "/users/cuthead/desktop/phuslu-goproxy-9087f35/uploader.py" sel ...
- 页面传递的都是string ; 每个标签要有name的原因是为了取值 因为传递给后台是键值对的形式
页面传递的都是string ; 每个标签要有name的原因是为了取值 因为传递给后台是键值对的形式
- codeforces630C
Lucky Numbers CodeForces - 630C 小希称只含7和8的数是幸运数,那么不超过n位的幸运数有多少个? Input 一个整数 n (1 ≤ n ≤ 55) Output 输出幸 ...
- Random Processes
对于信号处理来说,有一类信号是非常重要的,这类信号就是随机信号(random signal),也被称为随机过程(random processes/stochastic processes).在各种书籍 ...
- 本科理工男如何学习Linux
我是一个本科学电子的理工男,但是一直对计算机感兴趣,所以平时自己在课下喜欢学一些与计算机有关的东西.由于对计算机感兴趣,所以后来我参加了学校的计算机社团,在那里接受一些培训和指导.当时在社团里看到师兄 ...
- Auth模块使用方法大全
auth认证 导包 from django.contrib import auth 默认数据库中使用auth_user表 创建超级用户 python manage.py createsuperuser ...
- 【BZOJ4126】【BZOJ3516】【BZOJ3157】国王奇遇记 线性插值
题目描述 三倍经验题. 给你\(n,m\),求 \[ \sum_{i=1}^ni^mm^i \] \(n\leq {10}^9,1\leq m\leq 500000\) 题解 当\(m=1\)时\(a ...