PHP开发APP接口学习笔记
习要点概述1.APP接口简介 2.封装通信接口方法 3.核心技术 4.APP接口实例
服务器和客户端进行接口数据通信:服务器 --》数据库|缓存 --》调用接口 --》客户端
服务器从数据库或缓存中获取数据,调用封装好的接口获取接口数据,生成客户端的数据。
一.APP接口简介
知识对比:php面向对象接口,是一个抽象类,定义必须有interface关键字。如下图:
用于多人协作开发,提供规范的方法名,interface 类中定义抽象方法,在其他类中实现,所有的抽象方法必须实现,否则会报错。
APP接口,也称通信接口,为app提供数据交互。工作原理,app页面加载时,会发出接口请求(http请求),接口进行处理返回接口数据,APP开发工程师解析接口数据(JSON和XML),呈现到客户端。(客户端开发人员需要接口地址和接口数据)
api通信接口通信过程。类似我们常见的BS架构的通信模式。
返回的数据格式:JSON和XML
XML定义:扩展标记语言(extensible markup language)可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML格式统一,跨平台和语言非,非常适合数据传输和通信。
注意:区别于HTML标签,xml的节点允许用户自定义。根节点只有一个,节点类似HTML的标签。要有开始节点和结束,类似HTML的双标签和单标签,节点不能为数字。
json定义:(javaScript Object Notation)一种轻量级的数据交互格式,具有良好的可读性和快速编写的特性。可在不同的平台进行数据交换,json采用兼容性很高的,完全独立于语言文本格式。这些特性是json成为 理想的数据交换语言。解析成数组key:value形式。客户端JavaScript可以简单的通过eval()进行JSON数据的读取。
XML数据和JSON数据对比
1.xml数据比json数据可读性强;
2.生成数据方面,json比xml更便利。json数据生成,使用函数json_encode();xml数据生成有4种方法,图示方法是字符串拼接形式生成的;
还有三种方法使用php内置的类:DomDocumen,XMLWriter,SimpleXML类.
3.传输速度json数据比xml数据快。
APP接口做了哪些事情?
1.从数据库或者缓存中获取数据,通过数据接口,返回给客户端。2.提交数据,通过接口提交数据给服务器,服务器处理。
二、封装通信接口数据的方法
1.用json方式封装通信数据
php生成json数据使用json_encode函数,代码如下
json_encode($arr);
该函数只能接受utf-8编码的数据,如传递其他编码的数据,该函数会返回null。编码转换函数iconv
iconv('原来编码格式','需要转换的格式','需要转换的数据')
<?php
/*
**json文件生成
*/
/*iconv函数可以将变量从一种编码格式转换为另一种*/ $arr = array(
'id' => 1,
'name' => 'Tom'
); echo json_encode($arr); ?>
通信数据的标准格式如下:
2.用XML方式封装通信数据
2.1 PHP生成XML数据的方式
2.2使用xmlEncode函数封装xml数据
PHP开发APP接口学习笔记的更多相关文章
- PHP 开发 APP 接口 学习笔记与总结 - Redis 缓存
Redis 可以定期将数据备份到磁盘中(持久化),同时不仅仅支持简单的key/value 类型的数据,同时还提供list,set,hash等数据结构的存储:Memcache 只是简单的key/valu ...
- PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [5] 版本设计分析及数据表设计
APP 版本升级以及 APP 演示 ① 版本升级分析以及数据表设计 ② 版本升级接口开发以及 APP 演示 /** * version_upgrade 版本升级信息表 */ CREATE TABLE ...
- PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [3] 首页 APP 接口开发方案 ② 读取缓存方式
以静态缓存为例. 修改 file.php line:11 去掉 path 参数(方便),加上缓存时间参数: public function cacheData($k,$v = '',$cacheTim ...
- PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [7] APP 错误日志接口
APP 上线以后可能遇到的问题: ① APP 强退 ② 数据加载失败 ③ APP 潜在问题 错误日志需要记录的内容 数据表 error_log 字段: id app_id:app 类别 id did: ...
- PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [6] 版本升级接口开发
判定 app 是否需要加密:通过 app 表中的 status 字段来判定,加密的字符串为 app 表中的 key 字段. 在获取的客户端和服务器端(数据库表中相应字段)的版本号不一致时,返回 dat ...
- PHP 开发 APP 接口 学习笔记与总结 - JSON 结合 XML 方式封装通信接口
要求: 1.在一个类中封装多种数据通信方法(JSON,XML),并且只通过一个入口选择需要的数据通信格式 2.客户端开发工程师可以自行选择数据传输格式(GET 方式) response.php < ...
- PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [4] 首页 APP 接口开发方案 ③ 定时读取缓存方式
用于 linux 执行 crontab 命令生成缓存的文件 crop.php <?php //让crontab 定时执行的脚本程序 require_once 'db.php'; require_ ...
- PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [2] 首页 APP 接口开发方案 ① 读取数据库方式
方案一:读取数据库方式 从数据库读取信息→封装→生成接口数据 应用场景: 数据时效性比较高的系统 方案二:读取缓存方式 从数据库获取信息(第一次设置缓存或缓存失效时)→封装(第一次设置缓存或缓存失效时 ...
- PHP 开发 APP 接口学习笔记与总结 - [ Linux ] 定时任务
定时任务可以使用 crontab 命令来设定: crontab -e #编辑某个用户的cron 服务 crontab -l #列出某个用户cron 服务的详细内容 crontab -r #删除某个 ...
随机推荐
- python中除法的注意事项
使用python数据处理,代码如下: import numpy as np fs = 5 ts = np.arange(-1,1+1/fs,1/fs) 发现了这样一个错误: Traceback (mo ...
- mysql之数据分区
一:概述 通过把表分成多几区间,每个区间存储符合特定表达式的数据(即在我们创建分区表时指定每个分区存储的条件例如:PARTITION p0 VALUES LESS THAN (100) 即p0区间存 ...
- [NOIP模拟赛] 序列
Description 给定一个1~n的排列x,每次你可以将x1~xi翻转.你需要求出将序列变为升序的最小操作次数.有多组数据. Input 第一行一个整数t表示数据组数. 每组数据第一行一个整数n, ...
- linux中一些简便的命令之tac/comm
tac tac是cat的反写,即反序显示文件内容 如文件a.txt内容如下: 1 2 3 4 5 则tac a.txt打印如下: 54321 我们可以使用awk来实现tac的功能: awk '{arr ...
- [每天解决一问题系列 - 0012] 如何通过程序获取IIS站点信息
问题描述: 在WiX中需要判断某个站点是否存在,WiX没有这个能力,该怎么做呢? 解决方案: 解决方法就是写一个Custom Action来检测,实现的途径也有很多,现在想到了这么几个 1)Power ...
- Spark之submit任务时的Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient memory
Spark submit任务到Spark集群时,会出现如下异常: Exception 1:Initial job has not accepted any resources; check your ...
- CentOS+Nginx+Supervisor部署ASP.NET Core项目
对.Net Core的学习和实践,已经进行了一年多的世间,截止目前,微软已经发布.Net Core2.1,关于.NetCore的应用部署的文章比比皆是.今天借此,回顾下.net core环境的部署过程 ...
- 实验吧 貌似有点难 伪造ip
解题链接: http://ctf5.shiyanbar.com/phpaudit/ 解答: 点击View the source code —>代码显示IP为1.1.1.1即可得到KEY—> ...
- Java基础之循环语句、条件语句、switch case 语句
Java 循环结构 - for, while 及 do...while 顺序结构的程序语句只能被执行一次.如果您想要同样的操作执行多次,,就需要使用循环结构. Java中有三种主要的循环结构: whi ...
- 如何在github上搭建一个免费的 无限流量的静态网页博客Github pages
前言: 看到很多相关的教程,但是在实际操作的时候还是遇见了不少问题,这里记录分享一下我的操作流程.免费空间用过很多,博客也用过一些,听说了github后就想试着玩一下这个静态库,感觉挺不错的,操作也比 ...