简单接口(非框架)

来源:互联网 发布:中药材产业大数据 编辑:程序博客网 时间:2024/05/22 15:16
一.配置好两个域名
一个用于服务端接收请求并返回数据,www.api.com
一个用于移动端app发送请求,www.app.com

二.创建两个目录


三.interface目录里边写接口(代码如下)
<?php
//1.先判断接值方式----先定义数组
$type=array("GET","POST","REQUEST","PUT","DELETE");

//接值方式
$method=$_SERVER['REQUEST_METHOD'];

//返回值类型
$GLOBALS['retype']=isset($_REQUEST['retype'])?$_REQUEST['retype']:'jsonp';
$arr=[];
if(!in_array($method,$type)){
$arr['code']='401';
$arr['content']="the method is undefined";
exit(getinterface($arr));
}


$action=isset($_REQUEST['action'])?$_REQUEST['action']:"";

//2.判断数据的有效性
if(empty($action)){
$arr['code']='402';
$arr['content']="the action is undefined";
exit(getinterface($arr));
}
if($action=='register'){
$name=isset($_REQUEST['name'])?$_REQUEST['name']:"";
$pwd=isset($_REQUEST['pwd'])?$_REQUEST['pwd']:"";
if(empty($name)||empty($pwd)){
$arr['code']='403';
$arr['content']="the params is empty";
exit(getinterface($arr));
}else{
$sql="select admin_name from admin1 where admin_name='$name'";
$pdo=connect();
$re=$pdo->query($sql)->fetch(PDO::FETCH_NUM);
if($re){
$arr['code']='404';
$arr['content']="the username is already be used";
exit(getinterface($arr));
}else{
$sql="insert into admin1 (admin_name,admin_pwd) value('$name','$pwd')";
$re=$pdo->exec($sql);
if($re){
$arr['code']='200';
$arr['content']="success";
exit(getinterface($arr));
}else{
$arr['code']='405';
$arr['content']="network is wrong,please try again";
exit(getinterface($arr));
}
}
}
}
//3.调用对应的接口
//4.返回数据

function getinterface($arr){
if($GLOBALS['retype']=='xml'){
return enxml($arr);
}else{
return $_REQUEST['callback'].enjson($arr);
}
}


function enjson($arr){
return json_encode($arr);
}

function enxml($arr){
header('content-type:text/xml;charset=utf8');
$newXml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><root></root>');
foreach ($arr as $key => $value) {
if(is_numeric($key))
{
$key = 'code';
}
if(is_array($value)){
enxml($value,$newXml->addchild($key));
}else
{
$newXml->addchild($key,$value);
}
}
return $newXml->asXML();
}



//连接数据库
function connect(){
$dns="mysql:host=localhost;dbname=test";
$pdo=new PDO($dns,'root','');
$pdo->exec("set names utf8");
return $pdo;
}

四.app目录里边调用接口


<?php
//模拟get请求(同步请求)
// $json=file_get_contents("http://www.api.com/api.php?action=register&callback=show&name=111&pwd=11");
// echo $json;

//模拟post请求(异步请求)
$url = "http://www.api.com/api.php";
$post_data = array ("name" => "222","pwd" => "222","action"=>"register","callback"=>"show","retype"=>"json");
$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);// post数据
curl_setopt($ch, CURLOPT_POST, 1);// post的变量
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$output = curl_exec($ch);
curl_close($ch);
//打印获得的数据
print_r($output);


原创粉丝点击