php服务器开发之 app客户端首页接口开发(一) 概述及方案一:读取数据库方式开发首页接口

本篇博文主要内容:1.简述app客户端首页接口开发的三种方案

2.实例讲解 方案一:读取数据库方式开发首页接口

/**********************************************************************************************************************************/

方案一:读取数据库方式开发首页接口

1.从数据库获取消息

2.封装数据

3.生成接口数据

适用场景:

数据时效性高的系统

方案二:读取缓存方式开发首页接口

1.从数据库获取消息

2.封装数据,并写入缓存(memcache方式)

3.生成接口数据

适用场景:减少数据库压力

方案三:定时读取缓存方式开发首页接口

使用crontab定时任务

方案一详解:读取数据库方式开发首页接口

重点:1.如何获取数据2.如何生成通信数据

分析部分APP首页

慕课网:首页是列表页显示课程信息,不是一页全部显示,而是部分加载。通过访问数据库加载。

搜狐视频HD:模块很多,但是原理和慕课网类似。都是从数据库获取数据。

开发流程:

1.通过http请求服务器

2.服务器查询数据

3.服务器返回数据

实例:

list.php

<?php
//这是app首页接口
//访问方式http://****.com/list.php?page=1&pagesize=12
require_once('./response.php');//引入数据封装类
$page=isset($_GET['page'])?$_GET['page']:1;
//判断是否传入page的get值,如果传入对page赋值,否则赋值为1
$pageSize=isset($_GET['pageSizze'])?$_GET['pageSize']:1;
//同理判断pageSize
//判断传入数据合法性(是否为数字)
if(!is_numeric($page)||!is_numeric($pageSize))
{
	//code设置为401,这是服务端工程师规定的,需要在接口文档说明
	Response::show(401,'数据不合法');
	echo 1213123123123;
}

//起始值从offset开始获取pagesize条数据
$offset=($page-1)*$pageSize;
$sql="select * from video where status= 1 order by orderby desc limit".$offset."," .$pageSize;
echo $sql;//打印sql

通信数据(xml,json)封装类 response.php

<?php

class Response {
	const JSON = "json";
	/**
	* 按综合方式输出通信数据
	* @param integer $code 状态码
	* @param string $message 提示信息
	* @param array $data 数据
	* @param string $type 数据类型
	* return string
	*/
	public static function show($code, $message = '', $data = array(), $type = self::JSON) {
		if(!is_numeric($code)) {
			return '';
		}

		$type = isset($_GET['format']) ? $_GET['format'] : self::JSON;

		$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 static 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 static 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 static 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;
	}

}

http请求list.php

网页显示结果

未完待续。。。。。。。

时间: 2024-10-12 03:11:02

php服务器开发之 app客户端首页接口开发(一) 概述及方案一:读取数据库方式开发首页接口的相关文章

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

方案一:读取数据库方式 从数据库读取信息→封装→生成接口数据 应用场景: 数据时效性比较高的系统 方案二:读取缓存方式 从数据库获取信息(第一次设置缓存或缓存失效时)→封装(第一次设置缓存或缓存失效时)→返回数据 ↓                                              ↑ 缓存(缓存生效时)     →   →    →    → 方案三:定时读取缓存方式(crontab 定时任务) 封装并返回数据 ↑ 数据库→crontab→缓存 ↑ http 请求 ==

android开发之APP Widget

android开发之APP Widget 本博文主要讲述的android开发中的桌面程序的开发--APP widget,主要用的是PendingIntent和RemoteViews. PendingIntent主要用来设置桌面程序的相应方式.此对象可以有三种Intent方式,第一个是开始一个新的Activity,第二个是发送一个广播,第三个是开始一个service. RemoteViews的作用:因为桌面程序和app程序不是属于一个进程,不能通过正常的操作控件的方式来操作.需要使用系统提供的Re

小蚂蚁学习APP接口开发(7)—— APP接口实例——读取缓存方式开发APP接口的代码案例

从数据库中直接读取数据,虽然时效性很强,但是对数据库造成很大压力,尤其是在高访问量的情况下.这时候可以通过缓存,来有效的缓解了这一压力,虽然时效性有些不足,但是服务器的抗压能力却达到了很大的提高. 读取缓存方式的中心思想: 当请求进来时,先查看是否有缓存,如果有并且缓存还在有效时间内,不再查询数据库,直接返回缓存即可:如果没有或者已经过了有效时间,查询数据库,返回数据,同时生成一份新的缓存,供以后使用. 代码案例,还是在前几天的代码基础上进行改造完善. File静态缓存类    (原来的代码请参

基于xmpp openfire smack开发之Android客户端开发[3]

在上两篇文章中,我们依次介绍openfire部署以及smack常用API的使用,这一节中我们着力介绍如何基于asmack开发一个Android的客户端,本篇的重点在实践,讲解和原理环节,大家可以参考前两篇的文章 基于xmpp openfire smack开发之openfire介绍和部署[1] 基于xmpp openfire smack开发之smack类库介绍和使用[2] 1.源码结构介绍 activity包下存放一些android页面交互相关的控制程序,还有一个些公共帮助类 db包为sqlite

iOS开发之App主题切换完整解决方案(Swift版)

本篇博客就来介绍一下iOS App中主题切换的常规做法,当然本篇博客中只是提到了一种主题切换的方法,当然还有其他方法,在此就不做过多赘述了.本篇博客中所涉及的Demo完全使用Swift3.0编写完成,并使用iOS的NSNotification来触发主题切换的动作.本篇博客我们先对我们的主题系统进行设计,然后给出具体实现方式.当然在我们设计本篇博客所涉及的Demo时,我们要遵循"高内聚,低耦合","面向接口编程","便于维护与扩充"等特点. 本篇博

移动端开发之APP消息推送

有这样一种场景,当你在手机APP上输入你的信息,会自动跳出一个弹窗,表示某任务已执行.最简单的一个例子就是当你输入手机号,点击获取验证码的时候,就会跳出一个对话框,说"验证码已发送到手机,请注意查收",这些都是如何实现的. 就以我参与开发的一款移动报表FineReport为例,讲解一下如何开发手动推送APP消息. 这个APP里有这样一个应用,它是可以实现在客户端填报录入数据,然后数据上传到数据库中的这样一个功能,也就是所谓的移动化办公,这在企业办公方面用得比较多.当数据录入系统成功后,

iOS开发之App间账号共享与SDK封装

App间的数据共享可以使用KeyChian来实现.本篇博客就实战一下呢.开门见山,本篇博客会封装一个登录用的SDK, 该登录SDK中包括登录.注册.忘记密码等功能,当然该SDK中包括这些功能的UI.数据验证等业务逻辑.网络请求.数据存储等等.当然此处的登录SDK是一个简化版的,真正的登录SDK比这个考虑的东西要多的多,如果在加上多个App进行登录账号的共享的话,那么考虑的东西就更为复杂了. 本篇博客就先封装一个LoginSDK, 让后将该SDK植入到两个App中(一个暂且叫做"App One&q

Android开发之App Widget的学习及使用

(以下为本人对于官方文档的理解,能力有限,有错还望指出) 1.首先,我们先阅读下官方文档,后面活给出Demo程序 App Widgets(小工具,窗口小部件) App Widgets are miniature application views that can be embedded in other applications (such as the Home screen) and receive periodic(周期的,定期的) updates. These views are re

ios开发之APP升级的实现

直接上代码: /** * 检测软件是否需要升级 */ -(void)checkVersion { NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://itunes.apple.com/cn/lookup?id=%i",iFeverAPPID]]; ASIHTTPRequest *request = [[ASIHTTPRequest alloc]initWithURL:url]; [request s