zoukankan      html  css  js  c++  java
  • PHP实现RESTful风格的API实例

    原生方式实现,直接撸代码

    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;
        }
    }
  • 相关阅读:
    IT 已成为最疯狂的加班行业,没有之一
    编程和音乐真的很像吗?
    jquery:
    内存管理机制/垃圾回收机制:
    处理跨域:
    创建Djongo需要改url的地方:
    数据库连接池 DBUtils:
    C# 使用 SAP NCO3.0 调用SAP RFC函数接口
    java反射机制的原理与简单使用
    java反射机制的原理与简单使用
  • 原文地址:https://www.cnblogs.com/wenhainan/p/9017774.html
Copyright © 2011-2022 走看看