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
1 <?xml version="1.0" encoding="UTF-8"> 2 <item> 3 <title>yzm</title> 4 <test id="1" /> 5 </item>
APP的通信格式之json
JSON(JavaScript Object Notation)是一
种轻量级的数据交换语言,以文字为基础,且易于
让人阅读,同时也方便了机器进行解析和生成。
JSON简单说就是javascript中的对象和数组,所以
这两种结构就是对象和数组两种结构,通过这两种
结构可以表示各种复杂的结构,其可以将
JavaScript 对象中表示的一组数据转换为字符串,
然后就可以在函数之间轻松地传递这个字符串,或
者在异步应用程序中将字符串从Web客户机传递给
服务器端程序。JSON采用完全独立于程序语言的
文本格式。JSON是理想的数据交换语言。
1 { 2 "employees": [ 3 { "firstName":"Bill" , "lastName":"Gates" }, 4 { "firstName":"George" , 5 "lastName":"Bush" }, 6 { "firstName":"Thomas" , 7 "lastName":"Carter" } 8 ] 9 }
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,进行综合的封装
三、接口开发实例
1 <?php 2 3 4 class Response{ 5 static public function datas($code,$info,$data,$type='json'){ 6 switch ($type) { 7 case 'json': 8 # code... 9 return self::json($code,$info,$data); 10 11 12 break; 13 case 'xml': 14 return self::xml($code,$info,$data); 15 16 break; 17 case "array": 18 $arr=array( 19 'code'=>$code, 20 'info'=>$info, 21 'data'=>$data, 22 23 ); 24 var_dump($arr); 25 26 break; 27 28 default: 29 # code... 30 break; 31 } 32 } 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 } 59 60 static public function item($data){ 61 $str=""; 62 # code... 63 foreach ($data as $key => $value) { 64 # code... 65 if (is_array($value)) { 66 # code... 67 $str.="<data$key>".self::item($value)."</data$key>\n"; 68 69 70 71 }else{ 72 $str.="<$key>{$value}</$key>"; 73 } 74 75 } 76 77 return $str; 78 79 } 80 // json 81 82 static public function json($code,$info,$data){ 83 84 if (!is_numeric($code)) { 85 # code... 86 return false; 87 } 88 if ($info && $data) { 89 # code... 90 $arr=array( 91 'code'=>$code, 92 'info'=>$info, 93 'data'=>$data, 94 95 ); 96 return json_encode($arr); 97 }else{ 98 return false; 99 } 100 101 } 102 } 103 104 105 // $data=array( 106 // array('name'=>'use1','age'=>"10"), 107 // array('name'=>'use2','age'=>"10"), 108 // array('name'=>'use3','age'=>"10"), 109 // array('name'=>'use4','age'=>"10"), 110 // array('name'=>'use5','age'=>"10"), 111 // ); 112 // $arr=array('name'=>'name1','age'=>'10'); 113 114 // $type=isset($_GET['type'])?$_GET['type']:'json'; 115 // echo Response::datas('200','成功',$data,$type); 116 117 118 119 ?>