PHP实现RESTful风格的API实例(一)
2016-10-31 18:06
218 查看
(关于Yii2的RESTful教程请看: Yii2框架RESTful API教程)
最近看了一些关于RESTful的资料,自己动手也写了一个RESTful实例,以下是源码
目录详情:
Request.php :包含一个Request类,即数据操作类。接收到URL的数据后,根据请求URL的方式(GET|POST|PUT|PATCH|DELETE)对数据进行相应的增删改查操作,并返回操作后的结果:
下一篇PHP实现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实例(二)
相关文章推荐
- PHP实现RESTful风格的API实例(三)
- PHP实现RESTful风格的API实例(二)
- PHP实现Restful风格的API
- PHP实现Restful风格的API
- 一个实例演示jersey框架实现RESTful风格的Webservice,并发布到Tomcat,以及客户端调用示范
- AngularJS+RestfulAPI+BasicAuth+Python/PHP/Node.JS来实现一个最简单的新闻管理后台
- PHP中Restful api 错误提示返回值实现思路
- Yii2.0 实现RESTful风格的简单API
- springMVC整合FastJson实现RestFul风格API
- 基于PHP SLIM 框架搭建 RESTful 风格API 示例
- 使用Python & Flask 实现RESTful Web API的实例
- Yii2实现RESTful风格的API中要注意的坑
- springMVC整合FastJson实现RestFul风格API
- PHP中Restful api 错误提示返回值实现思路
- 用PHP程序实现删除目录的三种方法实例
- PHP类实例教程(二十三):PHP抽象类实现接口
- PHP实例:用SESSION方法实现验证码
- php下连接ftp实现文件的上传、下载、删除文件实例代码
- 用PHP实现飞信api接口发飞信短信
- 利用discuz实现PHP大文件上传应用实例代码