PHP开发APP接口】的更多相关文章

PHP开发APP接口 [TOC] 课程地址 imooc PHP开发APP接口 学习要点 APP接口简介 封装通信接口方法 核心技术 APP接口实例 服务器端 -> 数据库|缓存 -> 调用接口 -> 客户端 APP接口简介 APP接口介绍 APP如何进行通信 通信格式区别 APP接口做的哪些事儿 APP接口介绍 概念 PHP面向对象的接口(interface)与APP中的接口(API)概念区别: interface是一种特殊的抽象类,只定义一系列抽象方法. // 定义一个接口 inter…
这里将会调用前面博客的数据库连接单例.文件缓存类和开发APP接口(一) <?php // http://app.com/list.php?page-=1&pagesize=12 require_once('./response.php'); require_once('./file.php'); $file = new File(); $data = $file->cacheData('index_cron_cahce'); if($data) { return Response::s…
第1章 APP接口简介 - 课程简介 (:) - APP接口介绍 (:) - 客户端APP通信 (:) 最近学习 - 客户端APP通信格式区别 (:) - APP接口做的哪些事儿 (:) 第2章 封装通信接口方法 - JSON方式封装通信接口 (:) - PHP生成XML数据 (:) - XML方式封装通信接口 (:) - 综合方式封装通信数据方法 (:) 第3章 核心技术 - 静态缓存 (:) - Memcache和Redis缓存技术 (:) - 定时任务 (:) 第4章 APP接口实例 -…
习要点概述1.APP接口简介 2.封装通信接口方法 3.核心技术 4.APP接口实例 服务器和客户端进行接口数据通信:服务器 -->数据库|缓存 -->调用接口 -->客户端 服务器从数据库或缓存中获取数据,调用封装好的接口获取接口数据,生成客户端的数据. 一.APP接口简介 知识对比:php面向对象接口,是一个抽象类,定义必须有interface关键字.如下图: 用于多人协作开发,提供规范的方法名,interface 类中定义抽象方法,在其他类中实现,所有的抽象方法必须实现,否则会报错…
最近一段时间一直在做APP接口,总结一下APP接口开发以来的心得,与大家分享: 1. 客户端/服务器接口请求流程: 安卓/IOS客户端   –> PHP接口 –> 服务器端  –> 数据处理 –> 返回值(客户端接收并处理) APP的通信方式: 客户端   (接口地址:http://app.com/api.php?format=xml/json)    客户端APP   ------------------------------>  服务器               &l…
关于 APP接口版本兼容的问题. iOS和android 要不断开发新版本,很多服务端开发都是在以前接口的逻辑上进行修改. 新的APP和接口开发后,接口如何兼容老的APP? 有的公司 每次发布完APP,就强制用户更新到最新版本.不推荐这样,因为用户体验太差. 就算是用 强制更新,在苹果审核期间,新的APP接口和老的接口也必须能同时使用. 一.客户端做兼容,接口不用做兼容 1.APP强制更新(不建议) 接口URL:api.xxx.com/v1.0/xxxx.java 接口的URL中加入版本号,如上…
首先说明一下客户端APP通信的格式 1.xml:扩展标记语言(1.用来标记数据,定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言,xml格式统一,跨平台和语言,非常适合数据传输和通信,早已成为业界公认的标准) <?xml version="1.0" encoding="UTF-8"?> <item> <title>测试</title> <test id="1"> <de…
一.什么是app接口:服务端与客户端的数据交互. 大部分APP接口是通过http协议通信的. http通信的三要素: URL:   通信的地址 Method:通信的方式(get | post | put | delete) params: 通信的内容 二.客户端l如何传递参数: URL传递参数:比如常用的get方法 Request body: 比如常用的post方法…
APP 版本升级以及 APP 演示 ① 版本升级分析以及数据表设计 ② 版本升级接口开发以及 APP 演示 /** * version_upgrade 版本升级信息表 */ CREATE TABLE `version_upgrade` ( `id` ) unsigned NOT NULL AUTO_INCREMENT, `app_id` ) unsigned ' COMMENT '客户端设备id 1安卓pad 2安卓手机 3ios手机 4iospad', `version_id` ) unsig…
APP 上线以后可能遇到的问题: ① APP 强退 ② 数据加载失败 ③ APP 潜在问题 错误日志需要记录的内容 数据表 error_log 字段: id app_id:app 类别 id did:客户端设备号 version_id:版本号 version_mini:小版本号 error_log:错误信息(由 APP 返回,客户端开发工程师开发) error.php 处理 app 错误日志 <?php require_once('./common.php'); class ErrorLog e…
判定 app 是否需要加密:通过 app 表中的 status 字段来判定,加密的字符串为 app 表中的 key 字段. 在获取的客户端和服务器端(数据库表中相应字段)的版本号不一致时,返回 data['is_upload'] = 1 提示是否升级:一致时返回 data['is_upload'] = 0 不提示升级. common.php 中 getApp 方法可以添加缓存(静态/Redis等)缓存. common.php 处理接口公共业务 <?php /** * 处理接口公共业务 */ re…
以静态缓存为例. 修改 file.php line:11 去掉 path 参数(方便),加上缓存时间参数: public function cacheData($k,$v = '',$cacheTime = 0){ //文件名 $filename = $this->_dir.$k.'.'.self::EXT; ..... line:25 把缓存时间设置为 11 位的数字,如果不满 11 位,则在时间前面补 0.再把缓存时间和缓存内容进行拼接: $cacheTime = sprintf('%011…
要求: 1.在一个类中封装多种数据通信方法(JSON,XML),并且只通过一个入口选择需要的数据通信格式 2.客户端开发工程师可以自行选择数据传输格式(GET 方式) response.php <?php class Response{ const JSON = 'json'; //封装的综合方法,默认的数据类型为json public static function show($code,$message = '',$data,$type = self::JSON){ if(!is_numer…
防SQL注入和XSS攻击通用过滤 首先在 /app/library/ 目录下创建 Security.php 文件并添加以下代码: <?php /** * * 防SQL注入和XSS攻击通用过滤 */ class Security { public static function filter(&$params) { if (!is_array($params)) { return; } $patterns = ['/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/i', '…
用于 linux 执行 crontab 命令生成缓存的文件 crop.php <?php //让crontab 定时执行的脚本程序 require_once 'db.php'; require_once 'file.php'; $sql = 'select * from review where is_enabled = 1 order by creation_time desc limit 6'; try{ $connect = DB::getInstance()->connect(); }…
方案一:读取数据库方式 从数据库读取信息→封装→生成接口数据 应用场景: 数据时效性比较高的系统 方案二:读取缓存方式 从数据库获取信息(第一次设置缓存或缓存失效时)→封装(第一次设置缓存或缓存失效时)→返回数据 ↓                                              ↑ 缓存(缓存生效时)     →   →    →    → 方案三:定时读取缓存方式(crontab 定时任务) 封装并返回数据 ↑ 数据库→crontab→缓存 ↑ http 请求 ==…
定时任务可以使用 crontab 命令来设定: crontab -e #编辑某个用户的cron 服务 crontab -l  #列出某个用户cron 服务的详细内容 crontab -r  #删除某个用户的cron 服务 定时任务 crontab 格式: 分 小时 日 月 星期 命令 * * * * * 0-59 0-23 1-31 1-12 0-6 command * 代表取值范围内的数字 / 代表每,比如 /1 表示每分钟 */1 * * * * /usr/local/php/bin/php…
Redis 可以定期将数据备份到磁盘中(持久化),同时不仅仅支持简单的key/value 类型的数据,同时还提供list,set,hash等数据结构的存储:Memcache 只是简单的key/value 缓存. redis 的安装部署参见笔记:Redis 学习笔记与总结1 安装部署 ① 开启 redis 服务: [root@localhost bin]# /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf ② 开启…
php以json或者xml 形式返回给app.明白这点就很好说了,就是把数据包装成json或者xml,返回给APP 定义抽象APP基类: <?php /** * 定义API抽象类 */ abstract class Api { const JSON = 'Json'; const XML = 'Xml'; const ARR = 'Array'; /** * 定义工厂方法 * param string $type 返回数据类型 */ public static function factory(…
参考视频http://www.imooc.com/learn/163 <?php /** * app返回数据类 * 1.接受多维,缺少键名的数组, * 2.可由输入的format参数决定返回数据格式 * 例子:Response::show(200, 'success', $data); */ class Response { const JSON = 'json'; /** * 按json格式输出通信数据 */ public static function json($result) { ech…
感觉php做接口方面的教程很少,无意中搜到了这个视频教程,希望能给一些人带来帮助http://www.imooc.com/learn/163…
<?php //单例模式 class Db{ static private $_instance; static private $_connectSource; private $_dbConfig=array( 'host'=>'localhost', 'user'=>'root', 'passward'=>'111', 'database'=>'db_database12', ); private function __construct(){ } static pub…
单例模式 单例模式三大原则: ① 构造函数需要标记为非 public (防止外部使用 new 操作符创建对象),单例类不能在其他类中实例化,只能被自身实例化: ② 拥有一个保存类的实例的静态成员变量 $_instance ③ 拥有一个访问这个实例的公共的静态方法 单例模式(参见 PHP 单例模式代码片段): <?php /* * 单例模式 */ class DB{ static private $_instance; private function __construct(){ } stati…
存储静态缓存即把缓存写入文件. file.php <?php class Cache{ //静态缓存文件后缀名 const EXT = 'txt'; //定义缓存文件存放路径 private $_dir; public function __construct(){ $this->_dir = dirname(__FILE__).'/files/'; } public function cacheData($k,$v = '',$path = ''){ //文件名 $filename = $t…
1.PHP 生成 XML 数据 ① 拼接字符串 ② 使用系统类(DomDocument,XMLWriter,SimpleXML) 例1 使用 PHP 系统类中的 DomDocument 类: <?php $dom = new DomDocument('1.0','utf-8'); $element = $dom->createElement('test','This is a root element'); $dom->appendChild($element); echo $dom-&…
1.通信数据的标准格式 ( JSON ),包括: code:状态码(200,400等) message:提示信息(例如:数据返回成功.邮箱格式错误等) data:返回数据 2.JSON 方式封装通信接口 response.php <?php /** * 按json方式输出通信数据 * @param integer $code 状态码 * @param string $message 提示信息 * @param array $data 数据 * return string */ class Res…
Dcloud课程4 如何进行APP接口开发 一.总结 一句话总结:通过json或者xml. 1.APP如何进行通信? 通过在地址上接参数指明传递的数据的类型.而数据传递的类型一般是XML和json. 接口地址:http://yzm.sinaapp.com/list.php?format=xml接口文件:(list.php 处理一些业务逻辑)接口数据:xml和json 2.APP的两种通信格式xml和json的优劣是什么? 1.可读性方面: xml比较好2.生成数据方面:json较优(一个函数即可…
<?php /** * Description: App 接口 * Create date:2015-10-19 13:36 * Author: zhaoyingnan **/ class Response { /** * 综合方式 * @author zhaoyingnan 2015-10-19 11:24 * @param int $iCode 状态码 * @param string $sMsg 提示信息 * @param mix $mixData data * @param string…
最近一段时间一直在做APP接口,总结一下APP接口开发过程中的注意事项: 1.效率:接口访问速度 APP有别于WEB服务,对服务器端要求是比较严格的,在移动端有限的带宽条件下,要求接口响应速度要快,所有在开发过程中尽量选择效率高的框架,PHP建议使用YAF框架. 2.数据格式 最好使用JSON格式数据,因为JSON有较好的跨平台性. 3.数据量 按需分配,APP客户端需要什么数据就返回什么数据,过多的数据量影响处理速度,最重要的是影响传输效率. 4.接口.参数命名准确 无论是接口还是参数,命名都…
最近在开发APP的过程中,遇到一个问题,就是内容有一个固定的头部和底部.         头部就是我们常用的header了,底部的话,就放置一个button,用来提交页面数据或者进入下一个页面等,效果如下: 这里面需要注意到的地方就是,头和底是固定的,但是中间的部分呢,由于要设置24小时的内容,从图中可以看到,只显示了03:00~13:00的内容,剩下的内容没显示出来.这里面,我们就需要用到区域滚动了,就是保持头和底不动,中间滚动,所以,我们就要用到MUI的scorll组件,根据MUI官网的介绍…