摘要:方式是最常用也是最直接的通常用于方法,其实我认为中的表单实质上也是方式,但这种传输方式数据有限,也不规范,只适合一些简单场景。如何封装上面讲了,和是目前主流的通信数据格式,下面就来讲讲如何封装,方便运用。
必要性谢谢大家的收藏与赞,这是对我最大的鼓励。
不管在B/S架构中,还是C/S架构中,两端的数据通信(注:这里的通信是指的网络请求和回复操作)都无可避免,因为没有数据便没有内容,没有内容,又有什么意义 :)
一般来说C/S架构通信执行流程如下:
而B/S架构通信执行流程像这样:
选择既然数据通信,不可避免,那应该选择哪种通信方式比较好呢?目前来看服务器与客户端进行数据传输与交互的方式主要有URL、XML、JSON三种方式。
URL方式是最常用也是最直接的,通常用于GET方法,其实我认为POST中的Form表单实质上也是URL方式,但这种传输方式数据有限,也不规范,只适合一些简单场景。
XML和JSON实质上都是对数据的描述,目的是对复杂数据进行分割、包装、规范化等一系列处理,方便数据传输和解析,相对来说JSON比XML更轻巧但却更灵活强大,举个例子:用以上两种方式表示我的个人信息如下:
JSON: {"name":"entner","age":21,"gender":"男"} XML:entner 21 男
有兴趣的读者,可以参看后面的参考链接,写的非常详细。
如何封装?上面讲了,XML和JSON是目前主流的通信数据格式,下面就来讲讲如何封装,方便运用。
假设我们在后台操作数据库服务器得到数组数据,对于数组转Json只需要json_encode函数就够了,它会自动递归检测,对于数组转XML,就需要严格按照格式来,具体看代码和注释吧。
Source Code$code, "message"=>$message, "data"=>$data ); /* 由客户端传递参数决定封装数据的格式,默认Json格式 */ $type = isset($_GET["format"])? $_GET["format"]:self::JSON; if($type == "xml"){ $this->xmlEnCode($code,$message,$data); exit; //一次不允许并发多种格式,所以没必要执行下面的判断 }else if($type == "json"){ $this->jsonEncode($code,$message,$data); exit ; }else if($type == "array"){ var_dump($result); exit; }else{ // 客户端传来的数据格式为 http/ftp/ } } /** *输出Json格式通信数据 *@param inter code 状态码 *@param char message 消息提示 *@param array data 通信数据 *return string */ public function jsonEnCode($code,$message,$data=array()){ if(!is_numeric($code)){ exit(); } $result = array( "code"=>$code, "message"=>$message, "data"=>$data ); echo json_encode($result); //json_encode会自动递归转换数组变量 return true; } /** *输出XML格式通信数据 *@param inter code 状态码 *@param char message 消息提示 *@param array data 通信数据 *return string */ public function xmlEnCode($code,$message,$data=array()){ if(!is_numeric($code)){ exit(); } $result = array( "code"=>$code, "message"=>$message, "data"=>$data ); /* 拼接xml格式数据 */ /* 这里一定要注意声明头部信息和XML声明 */ header("Content-type:text/xml"); $xml = " "; $xml .= "参考链接"; /* XML标签其实也是字符串,所以要用 . 连接运算符 */ $xml .= self::xmlToJson($result); /* 调用xmlToJson函数解析数组转换为节点 */ $xml .= " "; echo $xml; } /** *递归拼接XML数据 *@param inter code 状态码 *@param char message 消息提示 *@param array data 通信数据 *return string */ public static function xmlToJson($data){ $xml = $attr = ""; foreach($data as $k => $v){ /*XML不允许出现数字标签,所以要么奖数字转化为字母,要么混合拼接,这里采用很合拼接的方式 */ if(is_numeric($k)){ $attr = " id = "{$k}" "; $k = "item"; $xml .="<{$k}{$attr}> "; /* 因为数组内部可能还存在数组,所以需要自行递归检查一遍,注意,在每次递归的时候,都要连接在$xml尾部,并换行 */ $xml .=is_array($v)?self::xmlToJson($v):$v; $xml .="{$k}> "; }else{ $xml .="<{$k}> "; $xml .=is_array($v)?self::xmlToJson($v):$v; $xml .="{$k}> "; } } return $xml; } } $data = array( "name"=>"entner", "type"=>array( 0=>"a", 1=>"b" ) ); $try = new Json(); $try->xmlEnCode(200,"success",$data);
浅谈PHP与手机APP开发即API接口开发
C/S B/S 及WEB工作原理
对比分析json及XML
这几天在搬宿舍,刚忙完,第一时间就来了,哈哈。
还是那句老话,欢迎各位留言和评论。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/23250.html
摘要:方式是最常用也是最直接的通常用于方法,其实我认为中的表单实质上也是方式,但这种传输方式数据有限,也不规范,只适合一些简单场景。如何封装上面讲了,和是目前主流的通信数据格式,下面就来讲讲如何封装,方便运用。 谢谢大家的收藏与赞,这是对我最大的鼓励。 必要性 不管在B/S架构中,还是C/S架构中,两端的数据通信(注:这里的通信是指的网络请求和回复操作)都无可避免,因为没有数据便没有内容,没...
摘要:概述谢谢大家的收藏与赞,这是对我最大的鼓励。这一系列文章主要是一些常用的类操作,回顾一下面向对象,我一直致力于小白文章的撰写,因为我也是小白,相信有人需要,希望读者能够喜欢。 概述 谢谢大家的收藏与赞,这是对我最大的鼓励。这一系列文章主要是一些PHP常用的类操作,回顾一下面向对象,我一直致力于小白文章的撰写,因为我也是小白,相信有人需要,希望读者能够喜欢。 说明 关于PHP语言实现...
摘要:概述谢谢大家的收藏与赞,这是对我最大的鼓励。这一系列文章主要是一些常用的类操作,回顾一下面向对象,我一直致力于小白文章的撰写,因为我也是小白,相信有人需要,希望读者能够喜欢。 概述 谢谢大家的收藏与赞,这是对我最大的鼓励。这一系列文章主要是一些PHP常用的类操作,回顾一下面向对象,我一直致力于小白文章的撰写,因为我也是小白,相信有人需要,希望读者能够喜欢。 说明 关于PHP语言实现...
阅读 1121·2021-11-08 13:13
阅读 1707·2019-08-30 15:55
阅读 2761·2019-08-29 11:26
阅读 2425·2019-08-26 13:56
阅读 2549·2019-08-26 12:15
阅读 2124·2019-08-26 11:41
阅读 1393·2019-08-26 11:00
阅读 1529·2019-08-23 18:30