phpAppInterface - juedaiyuer/researchNote GitHub Wiki

#PHP开发APP接口#

服务端--->数据库|缓存--->调用接口--->客户端

#访问URL
...api.php?format=xml

##APP通信接口定义##

  • 接口地址
  • 接口文件(api.php处理一些业务逻辑)
  • 接口数据

##通信格式##

  • XML数据
  • JSON数据

##封装通信数据方法##

###PHP生成方法###

#只能接受UTF-8编码的数据,如果传递其它格式的数据该函数会返回NULL
json_encode($value)


<?php
/**
 * Created by PhpStorm.
 * User: root
 * Date: 16-8-8
 * Time: 下午5:16
 */

$arr = array(
	'id' => 1,
	'name' => 'juedaiyuer'

);

echo json_encode($arr);

// 浏览器显示的JSON数据
{"id":1,"name":"juedaiyuer"}

// 字符串的编码转换
iconv('原始编码','目标编码',$data)

###通信数据标准格式###

code		状态码(200,400等)
message		提示信息(邮箱格式不正确;数据返回成功等)
data		返回数据

###按json方式输出通信数据###

<?php

class Response{

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

// 其它模块的调用

<?php
/**
 * Created by PhpStorm.
 * User: root
 * Date: 16-8-9
 * Time: 下午7:42
 */

require_once('./resource.php');

// 可以根据需要从数据库获取信息
$arr = array(
    'id'=>1,
    'name'=>'juedaiyuer'
);

response::json(200,'数据返回成功',$arr);

// 浏览器测试结果
{"code":200,"message":"\u6570\u636e\u8fd4\u56de\u6210\u529f","data":{"id":1,"name":"juedaiyuer"}}

###PHP生成XML数据###

####组装字符串####

public static function xml(){
    // show xml format in the broswer
    // header("Content-Type:text/xml");
    $xml = "<?xml version='1.0' encoding='utf-8'?>\n";
    $xml .= "<root>\n";
    $xml .= "<code>200</code>\n";
    $xml .= "<message>data success</message>\n";
    $xml .= "<data>\n";
    $xml .= "<id>1</id>\n";
    $xml .= "<name>juedaiyuer</name>\n";
    $xml .= "</data>\n";
    $xml .= "</root>\n";

    echo $xml;
}

####使用系统类####

  • DomDocument
  • XMLWriter
  • SimpleXML

###XML封装通信数据方法###

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'?>";
	$xml .= "<root>";

	$xml .= self::xmlToEncode($result);

	$xml .= "</root>";
}

public static function xmlToEncode($data){
	$xml = $attr = "";
	foreach ($data as $key => $value) {

		// 如果传递的参数里面有未写key的数组格式,比如array(4,6,7)
		// 解决方式:
		// <item id = '0'>4</item>
		// <item id = '1'>6</item>			
		// ...

		if(is_numeric($key)){
	        $attr = "id = '{$key}''";
	        $key = "item";
	    }

	    $xml .= "<{$key}{$attr}>";
	    //如果传递参数里有数组格式,采用递归方式转化成xml格式
	    $xml .= is_array($value)?self::xmlToEncode($value):$value;
	    $xml .= "</{$key}>";
	}

	return $xml;
}

###综合

##源代码##

⚠️ **GitHub.com Fallback** ⚠️