2025年5月18日 星期日 乙巳(蛇)年 二月廿 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > PHP

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

时间:05-16来源:作者:点击数:42

(关于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;
  • }
  • }
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门