slim开发webservice服务端接口

           在上一篇中,我们简单介绍了Slim在windows上的安装、测试,在这一篇中,将利用Slim开发一个webservice服务端。

1、先新建一个数据库连接的函数

//连接数据库
function getConnect($h='localhost',$u="",$p="",$db=""){
    $pdo = new PDO("mysql:host=$h;dbname=$db",$u,$p,array(PDO::MYSQL_ATTR_INIT_COMMAND=>"set names utf8"));
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    return $pdo;
}
//在上面我们用到的是Mysql数据库,输入正确的数据库所在计算机地址,用户名,密码,DB名称

2、导入Slim类库,创建实例

在这里由于我的PHP版本是5.3.1,所以选用了Slim2.0版本的。

//导入类库
require 'Slim/Slim.php';

//注册Slim框架自带的自动加载类
SlimSlim::registerAutoloader();

//创建实例
$app = new SlimSlim();

3、创建数据查询接口

$app->get("/login/:user/:paw","loginHandle");
$app->get("/realsearch","realsearchHandle");
$app->get("/cardsearch/:name","cardsearchHandle");
$app->get("/datesearch/:startdate/:enddate","datesearchHandle");
$app->get("/datesearch/:startdate/:enddate/:card","datesearchHandle1");
   //登录验证
function loginHandle($user,$paw){
     $sql="select  * from user where username='".$user."'and passwd = '".sha1($paw)."'";
   // ECHO $sql;
    try{
        //会话控制打开
        session_start();
        $pdo=getConnect();
        $stmt=$pdo->query($sql);
        $data=$stmt->fetchAll(PDO::FETCH_ASSOC);
       // var_dump($data);
        $pdo=null;   
       if (count($data))
       {
         $_SESSION['valid_user'] = $user;
        foreach($data as $key=>$value){  
            foreach ($value as $k=>$v){
                $data[$key][$k]=urlencode($v);
            }
        }  
        echo urldecode(json_encode($data));
       }
       else
       {
         foreach($data as $key=>$value){  
            foreach ($value as $k=>$v){
                $data[$key][$k]=urlencode($v);
            }
        }  
        echo urldecode(json_encode($data));
       } 
    }catch(PDOException $e){
        echo '{"err":'.$e->getMessage().'}';
    }       
}
function realsearchHandle(){
     $sql="select * from lngrealdata order by updatetime desc";
    try{
        if( check_valid_user())
        {
          $pdo=getConnect();
        $stmt=$pdo->query($sql);
        $data=$stmt->fetchAll(PDO::FETCH_ASSOC);
        $pdo=null;   
        //json不支持中文,使用前先转码         
        foreach($data as $key=>$value){  
            foreach ($value as $k=>$v){
                $data[$key][$k]=urlencode($v);
            }
        }  
        echo urldecode(json_encode($data));
    }        
        }
     catch(PDOException $e){
        echo '{"err":'.$e->getMessage().'}';
    }   
        
}
function cardsearchHandle($search){
    $sql="select * from lngrealdata where card = :search";
    try{
                if( check_valid_user())
        {
        $search=$search."order by ID desc limit 1";
        $pdo=getConnect();
        $stmt=$pdo->prepare($sql);
        $stmt->bindParam("search",$search);
        $stmt->execute();
        $data=$stmt->fetchAll(PDO::FETCH_ASSOC);
         //json不支持中文,使用前先转码         
        foreach($data as $key=>$value){  
            foreach ($value as $k=>$v){
                $data[$key][$k]=urlencode($v);
            }
            }
        }  
        echo urldecode(json_encode($data));

    }catch(PDOException $e){
        echo '{"err":'.$e->getMessage().'}'; 
    }
}
function datesearchHandle($startdate,$enddate){
    $sql="select * from lnghisdata where updatetime between '". $startdate."' and '". $enddate."'";
    try{
       // $search="between '". $startdate."' and '". $enddate."'";
               if( check_valid_user())
        {
        $pdo=getConnect();
        $stmt=$pdo->prepare($sql);
       // $stmt->bindParam("search",$search);
        $stmt->execute();
        $data=$stmt->fetchAll(PDO::FETCH_ASSOC);
         //json不支持中文,使用前先转码         
        foreach($data as $key=>$value){  
            foreach ($value as $k=>$v){
                $data[$key][$k]=urlencode($v);
            }
            }
        }  
        echo urldecode(json_encode($data));

    }catch(PDOException $e){
        echo '{"err":'.$e->getMessage().'}'; 
    }
}
function datesearchHandle1($startdate,$enddate,$card){
    $sql="select * from lnghisdata where card=".$card ." and updatetime between '". $startdate."' and '". $enddate."'";
    try{
                if( check_valid_user())
        {
       // $search="between '". $startdate."' and '". $enddate."'";
        $pdo=getConnect();
        $stmt=$pdo->prepare($sql);
       // $stmt->bindParam("search",$search);
        $stmt->execute();
        $data=$stmt->fetchAll(PDO::FETCH_ASSOC);
         //json不支持中文,使用前先转码         
        foreach($data as $key=>$value){  
            foreach ($value as $k=>$v){
                $data[$key][$k]=urlencode($v);
            }
            }
        }  
        echo urldecode(json_encode($data));

    }catch(PDOException $e){
        echo '{"err":'.$e->getMessage().'}'; 
    }
}

最后输入你的访问地址就可以输出查询到Json格式数据了。




IT文库 » slim开发webservice服务端接口
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址