在php中怎么實(shí)現(xiàn)RESTful風(fēng)格?這篇文章運(yùn)用了實(shí)例代碼展示,代碼非常詳細(xì),可供感興趣的小伙伴們參考借鑒,希望對(duì)大家有所幫助。
為柯橋等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及柯橋網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、柯橋網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
首先定義一個(gè)請求數(shù)據(jù)接收類;然后請求類中根據(jù)請求類型,進(jìn)行訪問不通方法;
class Request { // 允許的請求方式 private static $method_type = array('get', 'post', 'put', 'patch', 'delete'); // 測試數(shù)據(jù) private static $test_class = array( 1 => array('name'=>'測試一班','count'=>18), 2 => array('name'=>'測試二班','count'=>15) ); public static function getRequest() { // 請求方法 $method = strtolower($_SERVER['REQUEST_METHOD']); if (in_array($method, self::$method_type)) { // 調(diào)用請求方法對(duì)應(yīng)的方法 $data_name = $method . "Data"; return self::$data_name($_REQUEST); } return false; } // GET 獲取信息 private static function getData($request_data) { $class_id = (int)$request_data['class']; if ($class_id > 0) { // GET /class/ID: 獲取某個(gè)指定班的信息 return self::$test_class[$class_id]; }else{ // GET /class: 列出所有班級(jí) return self::$test_class; } } // POST /class 新建一個(gè)班級(jí) private static function postData($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'] = $request_data['count']; self::$test_class[] = $data; return self::$test_class; }else{ return false; } } // PUT /class/ID 更新某個(gè)指定班級(jí)的信息(全部信息) 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 更新某個(gè)指定班級(jí)的信息 (部分信息) private static function pacthData($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'] = $request_data['count']; } return self::$test_class; } // DELETE /class/ID 刪除某個(gè)班 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; } }
再定義一個(gè)數(shù)據(jù)輸出類,將數(shù)據(jù)輸出的格式進(jìn)行統(tǒng)一的封裝;最后將方法返回的數(shù)據(jù)進(jìn)行輸出即可。
"Not Found"); $message = "Not Found"; } header(self::HTTP_VERSION . " $code $message"); $content_type = isset($_SERVER['CONTENT_TYPE']) ? $_SERVER['CONTENT_TYPE'] : $_SERVER['HTTP_ACCEPT']; if (strpos($content_type, 'application/json') !== false) { header("Content-Type: application/json"); echo self::encodeJson($data); }elseif (strpos($content_type, 'application/xml') !== false) { header("Content-Type: application/xml"); echo self::encodeXml($data); }else{ header("Content-Type: text/html"); echo self::encodeHtml($data); } } // json 格式 private static function encodeJson($responseData) { return json_encode($responseData); } // xml 格式 private static function encodeXml($responseData) { $xml = new SimpleXMLElement(''); foreach ($responseData as $key => $value) { if (is_array($value)) { foreach ($value as $k => $v) { $xml->addChild($k,$v); } }else{ $xml->addChild($key,$value); } } return $xml->asXML(); } // html 格式 private static function encodeHtml($responseData) { $html = "
$k | $v | "; } }else{ $html .= "$key | $value | "; } $html .= "
以上就是php實(shí)現(xiàn)RESTful風(fēng)格的方法介紹,詳細(xì)使用情況還得要大家自己使用過才能知道具體要領(lǐng)。如果想閱讀更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!