使用擴展的 CodeIgniter 框架實現 RESTful 架構

名詞解析

  • REST(表現層狀態轉化)是一種原則,而符合這種原則的架構就稱之爲 RESTful 架構。

表現:

經過php

GET /library/1/book/2git

這種風格的 URI 來訪問控制器並傳遞參數, 其中 GET 是不出如今 URL 中的,而是表明一種操做方式(GETPOSTDELETEPUT),控制器經過判斷請求的方式,來決定最終調用的方法。 因此github

GET /book/1json

架構

POST /book/1函數

雖然訪問的 URL 徹底同樣,可是根據請求方式的不一樣,實際上調用的是控制器內不一樣的方法codeigniter

實現:

  • 使用 REST_Controller 擴展 CI_Controllerpost

  • 根據業務需求,對路由進行重寫,能夠使用非正常格式的 URL 訪問對應的對象方法ui

  • 經過 REST_Controller 判斷請求的類型,並將 URL 中的參數交給相應的控制器處理this

例:

若是發送 GET 請求到

www.test.com/index.php/user/1

那麼 RESTful 路由會調用 User 控制器中的 index_get($id) 方法,並將參數 1 傳遞給 $id。

同理若是發送 GET 請求到 URL

www.test.com/index.php/user/book/name/foo/id/1

則會調用 User 控制器中的 login_get() 方法,經過

$this->get('name')
複製代碼

$this->get('id')
複製代碼

來分別獲取到 URL 中傳遞的 $foo 和 $id 變量。

若是發送 POST 請求到

www.test.com/index.php/user/login

則會調用 User 控制器的 login_post() 方法,經過形如

$this->post('name');
複製代碼

的方法獲取對應的參數。

PUT \ DELETE 同理。

返回數據:

控制器中相應的函數通過一系列處理後,須要返回包含足夠信息的 json 格式字符串(根據具體需求)

經過形以下面的方法返回json格式的字符串:

$data = ['name'=>'','age'=>''];  
$this->response($data);  
複製代碼

相關連接:

codeigniter-restserver 項目地址

相關文章
相關標籤/搜索