首页 > 代码库 > php 创建简单的Restful WebAPI(三)

php 创建简单的Restful WebAPI(三)

  上篇记录了怎样实现route,本篇记录怎么实现request,response。

  Request 处理请求

<?phpclass Request{    private $request_vars;      private $data;      private $http_accept;      private $method;     private $ID;       public function __construct($id = null)      {          $this->request_vars      = array();          $this->data              = http://www.mamicode.com/array();         $this->http_accept       = ‘application/json‘;          $this->method            = ‘get‘;          $this->ID                = $id;          $this->processRequest();    }      public function processRequest()    {        $request_method = strtolower($_SERVER[‘REQUEST_METHOD‘]);        $this->setMethod($request_method);          $request_vars = $_GET;        if($request_vars != ‘‘){            $this->setRequestVars($request_vars);         }          $data = file_get_contents(‘php://input‘);        if($data != ‘‘){            $this->setData(json_decode($data,TRUE));          }     }     public function setID($id)      {          $this->ID = $id;      }        public function setData($data)      {          $this->data = http://www.mamicode.com/$data;      }        public function setMethod($method)      {          $this->method = $method;      }        public function setRequestVars($request_vars)      {          $this->request_vars = $request_vars;      }    public function getID()      {          return $this->ID;      }        public function getData()      {          return $this->data;      }        public function getMethod()      {          return $this->method;      }        public function getHttpAccept()      {          return $this->http_accept;      }        public function getRequestVars()      {          $this->request_vars[‘id‘] = $this->ID;        return $this->request_vars;      }  }  ?>

  代码十分简单,就是从request获取请求method,querystring,请求body数据(json格式)。

  Response 发送响应

<?phpclass Response{    public function __construct()      {    }    public function sendResponse($status = 200, $body = ‘‘, $content_type = ‘application/json‘)     {         $status_header = ‘HTTP/1.1 ‘ . $status . ‘ ‘ . $this->getStatusCodeMessage($status);           header($status_header);           header(‘Content-type: ‘ . $content_type . ‘; charset=utf-8‘);          echo $body;         exit;      }    public function getStatusCodeMessage($status)      {          $codes = Array(              100 => ‘Continue‘,              101 => ‘Switching Protocols‘,              200 => ‘OK‘,              201 => ‘Created‘,              202 => ‘Accepted‘,              203 => ‘Non-Authoritative Information‘,              204 => ‘No Content‘,              205 => ‘Reset Content‘,              206 => ‘Partial Content‘,              300 => ‘Multiple Choices‘,              301 => ‘Moved Permanently‘,              302 => ‘Found‘,              303 => ‘See Other‘,              304 => ‘Not Modified‘,              305 => ‘Use Proxy‘,              306 => ‘(Unused)‘,              307 => ‘Temporary Redirect‘,              400 => ‘Bad Request‘,              401 => ‘Unauthorized‘,              402 => ‘Payment Required‘,              403 => ‘Forbidden‘,              404 => ‘Not Found‘,              405 => ‘Method Not Allowed‘,              406 => ‘Not Acceptable‘,              407 => ‘Proxy Authentication Required‘,              408 => ‘Request Timeout‘,              409 => ‘Conflict‘,              410 => ‘Gone‘,              411 => ‘Length Required‘,              412 => ‘Precondition Failed‘,              413 => ‘Request Entity Too Large‘,              414 => ‘Request-URI Too Long‘,              415 => ‘Unsupported Media Type‘,              416 => ‘Requested Range Not Satisfiable‘,              417 => ‘Expectation Failed‘,              500 => ‘Internal Server Error‘,              501 => ‘Not Implemented‘,              502 => ‘Bad Gateway‘,              503 => ‘Service Unavailable‘,              504 => ‘Gateway Timeout‘,              505 => ‘HTTP Version Not Supported‘          );         return (isset($codes[$status])) ? $codes[$status] : ‘‘;      }}  ?>

  生成response。

  这两个类为工具类,实现也不复杂,功能单一,需要继续丰富修改。

php 创建简单的Restful WebAPI(三)