首先說明一下客戶端APP通信的格式
1.xml:擴展標記語言(1.用來標記數據,定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言,xml格式統一,跨平台和語言,非常適合數據傳輸和通信,早已成為業界公認的標准)
<?xml version="1.0" encoding="UTF-8"?>
<item>
<title>測試</title>
<test id="1">
<description>測試oen</description>
<address>深圳</address>
</item>
XML的可讀性要好
2、json:一種清涼級別的數據交換格式,具有良好的可讀和便於快速編寫的特性,可在不同平台證件進行數據交換,JSON采用兼容性很高的,完全獨立於語言文本格式。這種特性使JSON成為理想的數據交換語言。
{"code":200,"message":"\u6210\u529f\u54af","data":{"id":1,"name":"jiang"}}
JSON的生成數據性 (json_encode(數組)) 傳輸速度方面要好
再說一下APP接口做的那些事
獲取數據:從數據庫中或緩存中獲取數據,然后通過接口數據返回客戶端
提交數據:通過接口提交數據給服務器,然后通過服務器入庫處理,或者其他處理
最后綜合方式封裝通信數據方法
封裝方法:show($code,$message,$data=array(),$type='json/xml')
<?php
namespace Miaoxing\Zhw\Service;
use miaoxing\plugin\BaseModel;
class ZhwCategory extends BaseModel
{
const JSON = "json";
/**
* 按x綜合方式輸出通信數據
* @param integer $code 狀態碼
* @param string $message 提示信息
* @param array $data 數據
* @param string $type 數據類型
* return string
*/
public function show($code,$message='',$data=array(),$type = self::JSON)
{
if (!is_numeric($code)){
return "錯誤編碼";
}
$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 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 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 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;
}
}
Controller:
public function jsonsAction()
{
$arr = array(
'id' => 1,
'name' => 'jiang'
);
$k = wei()->zhwCategory()->json(200,'成功咯',$arr);
return $k;
}
public function xmlsAction()
{
$arr = array(
'id' => 1,
'name' => 'jiang',
'type' =>array(4,5,6),
'test' =>array(1,45,67=>array(1,2,3)),
);
$k = wei()->zhwCategory()->xmlEncode(200,'成功咯',$arr);
return $k;
}
public function showAction()
{
$arr = array(
'id' => 1,
'name' => 'jiang',
'type' =>array(4,5,6),
'test' =>array(1,45,67=>array(1,2,3)),
);
$k = wei()->zhwCategory()->show(200,'成功咯',$arr,'json');
return $k;
}
本人轉自:https://blog.csdn.net/weixin_38300969/article/details/78341982
僅供自己學習,特此記錄
