• PHP接口开发 thinkphp3.2 restful接口的实现


    参考thinkphp3.2手册 专题=>restful;

    REST(Representational State Transfer表述性状态转移)是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性.restful借口的实现必不可少的便是路由的运用。
    启用路由:在ApplicationCommonConfconfig.php里开启路由,'URL_ROUTER_ON' => true, 然后设置路由规则,在模块的配置文件中使用URL_ROUTE_RULES参数进行配置,配置格式是一个数组,每个元素都代表一个路由规则,例如:

    'URL_ROUTE_RULES'=>array(
    'news/:id' => 'Index/index',
    ),
    表示Index控制器里面的index方法,在地址栏内输入index.php/Home/news/china.html则会输出china.xml.简单的了解路由规则的定义格式为: '路由表达式'=>'路由地址和传入参数'。
    在控制器里接收通过路由传过来的值:

    <?php
    namespace HomeController;
    use ThinkControllerRestController;
    Class IndexController extends Controller {
    public function index(){
    echo $_GET['id'];
    }
    }
    下面的是天气查询的一个简单小接口的实现:
    <?php
    namespace HomeController;
    use ThinkControllerRestController;
    Class IndexController extends RestController {

    public function index(){
    if(__EXT__==""||__EXT__=="html"){
    $type='html';
    }else{
    $type=__EXT__;
    }
    //print_r(__EXT__);
    $pyname = $_GET['id'];
    switch ($this->_method){
    case 'get': // get请求处理代码
    if ($type== 'html'){
    // 'html';die;
    $data=$this->city($pyname);
    //print_r($data);
    //Response方法会自动对data数据进行输出类型编码,目前支持的包括xml/json/html。
    //$this->response($data,'json');
    $result=$this->response($data,'html');
    //print_r($result);
    return $result;
    }elseif($type== 'xml'){
    $data = $this->city($pyname);
    $result = $this->response($data,'xml');
    return $result;
    }elseif($type=='json'){
    $data=$this->city($pyname);
    $result=$this->response($data,'json');
    return $result;
    }
    break;
    case 'put': // put请求处理代码
    break;
    case 'post': // post请求处理代码
    break;
    }

    }

    public function city($name){
    $sheng=M("sheng");
    $city=M("city");
    $xian=M("xian");
    if($name=='china'){
    $res=$sheng->select();
    //print_r($res);
    return $res;
    }else{
    //getFieldBy动态查询 根据字段查询并返回某个字段的值
    $sid=$sheng->getFieldByPyname($name,'id');
    //print_r($sid);die;
    if($sid==""){
    $cid=$city->getFieldByPyname($name,'id');
    if($cid==""){
    $xid=$xian->getFieldByPyname($name,'id');
    if($xid==""){
    echo "没有该地天气数据";
    }else{
    $condition['id'] = $xid;
    $res=$xian->where($condition)->select();
    //print_r($res);
    return $res;
    }
    }else{
    $condition['p_id'] = $cid;
    $res=$xian->where($condition)->select();
    // print_r($res);
    return $res;
    }
    }else{
    $condition['p_id'] = $sid;
    $res=$city->where($condition)->select();
    //print_r($res);
    return $res;
    }
    }
    }
    注意:IndexController继承的是RestController而非Controller;__EXT__表示的是自动检测资源类型.Response方法会自动对data数据进行输出类型编码,目前支持的包括xml/json/html 。 这样,一个简单的天气查询的接口就实现了。
    ————————————————
    版权声明:本文为CSDN博主「tian_fighting」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/zhangweiguangsunjiao/article/details/45740477

  • 相关阅读:
    Deep learning:二十五(Kmeans单层网络识别性能)
    Deep learning:三十六(关于构建深度卷积SAE网络的一点困惑)
    Matlab成长之路_5(解决out of memory问题)
    Deep learning:三(Multivariance Linear Regression练习)
    Deep learning:一(基础知识_1)
    Deep learning:三十二(基础知识_3)
    算法设计和数据结构学习_2(常见排序算法思想)
    Deep learning:二十七(Sparse coding中关于矩阵的范数求导)
    Deep learning:十二(PCA和whitening在二自然图像中的练习)
    总结系列_15(不能从u盘启动安装win7系统的一个小原因)
  • 原文地址:https://www.cnblogs.com/westsoft/p/15176766.html
Copyright © 2020-2023  润新知