• PHP实现RESTful风格的API实例(一)


    (关于Yii2的RESTful教程请看: Yii2框架RESTful API教程

    最近看了一些关于RESTful的资料,自己动手也写了一个RESTful实例,以下是源码

    目录详情:

    restful/
        Request.php 数据操作类
        Response.php 输出类
        index.php 入口文件
        .htaccess 重写url

    Request.php :包含一个Request类,即数据操作类。接收到URL的数据后,根据请求URL的方式(GET|POST|PUT|PATCH|DELETE)对数据进行相应的增删改查操作,并返回操作后的结果:

     
    <?php
    
    /**
     * 数据操作类
     */
    class Request
    {
        //允许的请求方式
        private static $method_type = array('get', 'post', 'put', 'patch', 'delete');
        //测试数据
        private static $test_class = array(
            1 => array('name' => '托福班', 'count' => 18),
            2 => array('name' => '雅思班', 'count' => 20),
        );
    
        public static function getRequest()
        {
            //请求方式
            $method = strtolower($_SERVER['REQUEST_METHOD']);
            if (in_array($method, self::$method_type)) {
                //调用请求方式对应的方法
                $data_name = $method . 'Data';
                return self::$data_name($_REQUEST);
            }
            return false;
        }
    
        //GET 获取信息
        private static function getData($request_data)
        {
            $class_id = (int)$request_data['class'];
            //GET /class/ID:获取某个指定班的信息
            if ($class_id > 0) {
                return self::$test_class[$class_id];
            } else {//GET /class:列出所有班级
                return self::$test_class;
            }
        }
    
        //POST /class:新建一个班
        private static function postData($request_data)
        {
            if (!empty($request_data['name'])) {
                $data['name'] = $request_data['name'];
                $data['count'] = (int)$request_data['count'];
                self::$test_class[] = $data;
                return self::$test_class;//返回新生成的资源对象
            } else {
                return false;
            }
        }
    
        //PUT /class/ID:更新某个指定班的信息(全部信息)
        private static function putData($request_data)
        {
            $class_id = (int)$request_data['class'];
            if ($class_id == 0) {
                return false;
            }
            $data = array();
            if (!empty($request_data['name']) && isset($request_data['count'])) {
                $data['name'] = $request_data['name'];
                $data['count'] = (int)$request_data['count'];
                self::$test_class[$class_id] = $data;
                return self::$test_class;
            } else {
                return false;
            }
        }
    
        //PATCH /class/ID:更新某个指定班的信息(部分信息)
        private static function patchData($request_data)
        {
            $class_id = (int)$request_data['class'];
            if ($class_id == 0) {
                return false;
            }
            if (!empty($request_data['name'])) {
                self::$test_class[$class_id]['name'] = $request_data['name'];
            }
            if (isset($request_data['count'])) {
                self::$test_class[$class_id]['count'] = (int)$request_data['count'];
            }
            return self::$test_class;
        }
    
        //DELETE /class/ID:删除某个班
        private static function deleteData($request_data)
        {
            $class_id = (int)$request_data['class'];
            if ($class_id == 0) {
                return false;
            }
            unset(self::$test_class[$class_id]);
            return self::$test_class;
        }
    }
     

    下一篇PHP实现RESTful风格的API实例(二)

  • 相关阅读:
    C#_数据访问类查询 和 属性扩展
    C#_0913 完整修改删除、实体类和数据访问类
    webform基础
    TreeView, 数据导出
    无边框窗体,tiner控件
    容器,打印设置
    多窗体,菜单工具栏
    公共控件
    winform
    数据访问类查询
  • 原文地址:https://www.cnblogs.com/quanzhiguo/p/7157769.html
Copyright © 2020-2023  润新知