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较优(一个函数即可)
3、传输速度方面:json胜出

3、通信数据的标准格式是什么?

code 状态码(200,400 等)
message 提示信息(提示用户的操作成功与失败)
data 返回的数据

114 // $type=isset($_GET['type'])?$_GET['type']:'json';
115 // echo Response::datas('200','成功',$data,$type);

4、XML方式如何进行数据通信?

将所有数据包装在data标签中,xml可以自己创建标签。

这里用的就是普通的字符串拼接。

data里面的每一条可以封装在data1标签,data2标签等,也可以语义自定义标签。

 33     // xml
34 static public function xml($code,$info,$data){
35 if (!is_numeric($code)) {
36 # code...
37 return false;
38 }
39
40 if ($info && $data) {
41
42 $str=' <?xml version="1.0" encoding="UTF-8">
43 <item>
44 <code>'.$code.'</code>
45 <info>'.$info.'</info>
46 <data>
47 ';
48 $str.=self::item($data);
49 $str.='
50 </data>
51 </item> ';
52
53 return $str;
54 }else{
55 return false;
56 }
57
58 }

二、如何进行APP接口开发

1)APP接口介绍

APP接口和PHP接口之间对比

2)APP如何进行通信

接口地址:
http://yzm.sinaapp.com/list.php?format=xml
接口文件:(list.php 处理一些业务逻辑)
接口数据:xml和json

3)通信格式

重点:
了解 xml和json优异和区别

APP的通信格式之xml

xml:扩展标记语言(Extensible Markup
Language,XML),可以用来标记数据、定义数
句类型,是一种允许用户对自己标记语言进行定义
的源语言。XML格式统一,扩平台语言,非常适合
数据传输和通信,业界公认的标准。
支持操作系统:windows 、linux
支持语言:python、php、java

 <?xml version="1.0" encoding="UTF-8">
<item>
<title>yzm</title>
<test id="1" />
</item>

APP的通信格式之json

JSON(JavaScript Object Notation)是一
种轻量级的数据交换语言,以文字为基础,且易于
让人阅读,同时也方便了机器进行解析和生成。
JSON简单说就是javascript中的对象和数组,所以
这两种结构就是对象和数组两种结构,通过这两种
结构可以表示各种复杂的结构,其可以将
JavaScript 对象中表示的一组数据转换为字符串,
然后就可以在函数之间轻松地传递这个字符串,或
者在异步应用程序中将字符串从Web客户机传递给
服务器端程序。JSON采用完全独立于程序语言的
文本格式。JSON是理想的数据交换语言。

 {
"employees": [
{ "firstName":"Bill" , "lastName":"Gates" },
{ "firstName":"George" ,
"lastName":"Bush" },
{ "firstName":"Thomas" ,
"lastName":"Carter" }
]
}

APP的通信格式之区别

1、可读性方面: xml比较好
2、生成数据方面:json较优(一个函数即可)
3、传输速度方面:json胜出

4)APP接口的作用

1、获取数据:
从数据或者缓存中获取数据,然后通过接口数据
返回给客户端。
2、提交数据:
通过接口提交给服务器,然后服务器对数据进行
入库处理,并返回执行结果。

5)通信数据的标准格式

code 状态码(200,400 等)
message 提示信息(提示用户的操作成功与失败)
data 返回的数据

6)json方式封装接口数据的方法

php生成JSON数据
方法:json_encode($value);
注意:该函数只能接受UTF-8编码的数据,
如果传递其他格式的数据的话会返回NULL

7)xml方式封装接口数据的方法

php生成xml数据
1)组成字符串
2)使用系统类
1、DomDocument
2、XMLWriter
3、SimpleXML

8)综合的封装通信接口的方式

将上述的xml和json,进行综合的封装

三、接口开发实例

 <?php 

 class Response{
static public function datas($code,$info,$data,$type='json'){
switch ($type) {
case 'json':
# code...
return self::json($code,$info,$data); break;
case 'xml':
return self::xml($code,$info,$data); break;
case "array":
$arr=array(
'code'=>$code,
'info'=>$info,
'data'=>$data, );
var_dump($arr); break; default:
# code...
break;
}
}
// xml
static public function xml($code,$info,$data){
if (!is_numeric($code)) {
# code...
return false;
} if ($info && $data) { $str=' <?xml version="1.0" encoding="UTF-8">
<item>
<code>'.$code.'</code>
<info>'.$info.'</info>
<data>
';
$str.=self::item($data);
$str.='
</data>
</item> '; return $str;
}else{
return false;
} } static public function item($data){
$str="";
# code...
foreach ($data as $key => $value) {
# code...
if (is_array($value)) {
# code...
$str.="<data$key>".self::item($value)."</data$key>\n"; }else{
$str.="<$key>{$value}</$key>";
} } return $str; }
// json static public function json($code,$info,$data){ if (!is_numeric($code)) {
# code...
return false;
}
if ($info && $data) {
# code...
$arr=array(
'code'=>$code,
'info'=>$info,
'data'=>$data, );
return json_encode($arr);
}else{
return false;
} }
} // $data=array(
// array('name'=>'use1','age'=>"10"),
// array('name'=>'use2','age'=>"10"),
// array('name'=>'use3','age'=>"10"),
// array('name'=>'use4','age'=>"10"),
// array('name'=>'use5','age'=>"10"),
// );
// $arr=array('name'=>'name1','age'=>'10'); // $type=isset($_GET['type'])?$_GET['type']:'json';
// echo Response::datas('200','成功',$data,$type); ?>
 

Dcloud课程4 如何进行APP接口开发的更多相关文章

  1. APP 接口开发及读取静态缓存

    <?php /** * Description: App 接口 * Create date:2015-10-19 13:36 * Author: zhaoyingnan **/ class Re ...

  2. app接口开发

    最近一段时间一直在做APP接口,总结一下APP接口开发过程中的注意事项: 1.效率:接口访问速度 APP有别于WEB服务,对服务器端要求是比较严格的,在移动端有限的带宽条件下,要求接口响应速度要快,所 ...

  3. app接口开发(php)

    1.JSON方式封装通信接口: 封装: response.php <?php // JSON方式封装通信接口 // 定义 response类 class Response { // 定义一个静态 ...

  4. PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [3] 首页 APP 接口开发方案 ② 读取缓存方式

    以静态缓存为例. 修改 file.php line:11 去掉 path 参数(方便),加上缓存时间参数: public function cacheData($k,$v = '',$cacheTim ...

  5. php做APP接口开发,接口的安全性

    1.当用户登录APP时,使用https协议调用后台相关接口,服务器端根据用户名和密码时生成一个access_key,并将access_key保存在session(或者保存在redis)中,将生成的ac ...

  6. PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [4] 首页 APP 接口开发方案 ③ 定时读取缓存方式

    用于 linux 执行 crontab 命令生成缓存的文件 crop.php <?php //让crontab 定时执行的脚本程序 require_once 'db.php'; require_ ...

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

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

  8. 【APP接口开发】php输出json格式数据

    请一定配合使用null转空字符的方法一起使用:(_unsetNull() 和 _json() 配合使用) 在一些接口的调用中,直接查询数据库出来的字段可能为null字段,但是为了简便前端的判断,需要把 ...

  9. 【APP接口开发】php获取body数据

    PHP获取接口数据: $postStr = file_get_contents("php://input");//因为很多都设置了register_globals禁止,不能用$GL ...

随机推荐

  1. img下面的留白解决

    在做网页的时候经常会出现一个令人困惑的现象.那就是行内元素和块级元素之间会出现“留白”.就是块级元素中明明只有一个行内元素,但行内元素却不会铺满块级元素.像这个例子: “留白”出现的原因 行内元素默认 ...

  2. Cocos2d-x--iOS平台lua加密成luac资源方法和Jsc文件&lt;MAC平台开发试用--windows平台暂未研究&gt;

        首先要说.近期真的是太忙了.好久没写博客了,今天正好有空,就写一下近期在写游戏中的一些发现:     话说,基于Cocos2dx 引擎 + 脚本写游戏,至今的感触就是能够进行增量更新和即时编译 ...

  3. java架构解密——实时动态aop

    在上篇博客中个.咱们一起组建了一个容器,里面封装了业务,这样,咱们就将业务和服务的组装放到了client,而client就相当于咱们的开发中使用到的配置文件.大家发现问题了吗?就是我不能动态修改了?业 ...

  4. google dataflow model 论文

    http://www.chinacloud.cn/show.aspx?id=24446&cid=17

  5. 关于指定dll搜索路径

    原文:关于指定dll搜索路径 问题现象 当部分DLL放在子文件夹下,需要指定DLL搜索路径,否则系统将找不到文件 产生原因 系统默认搜索只会在前程序目录并不包括子目录 解决方法 1,使用App.con ...

  6. mycat 不得不说的缘分(转)

    ,尾声,左兄与任正非.leader-us与马云 新成立的公司里面,有个左兄,很传奇,大一在大学入伍,然后复员专业,来上海学IT,年纪轻轻,睡在地铁站,苦心专研数据库.系统.中间件,现在已经成为了业界大 ...

  7. Android学习笔记进阶九之Matrix对称变换

    网上很多的倒影特效实际上就是一个对称变换,在改变透明度即可. Matrix对称变换包括很多种,有关于Y轴对称,关于X轴对称,关于y= -x对称等等. 1 关于Y轴对称 // 获取资源文件的引用res ...

  8. 35.Intellij IDEA设置忽略部分类编译错误

    转自:https://www.aliyun.com/jiaocheng/290360.html 有些时候我们的项目中有些错误,但这些错误并不影响项目的整体运行(或许是没有使用到),默认情况下idea是 ...

  9. Zabbix监控告警

    一 钉钉告警 1.1.1 添加钉钉机器人 发起群聊 创建完群聊选择,机器人管理 选择你要绑定的群聊 复制下面地址留用 1.1.2 编写钉钉告警脚本 安装requests库,HTTP客户端, # yum ...

  10. golang round

    func Round(f float64, n int) float64 {pow10_n := math.Pow10(n)return math.Trunc((f+0.5/pow10_n)*pow1 ...