(筆記)使用擴充套件的CI框架實現RESTful框架
阿新 • • 發佈:2019-01-23
REST(表現層狀態轉化)是一種原則,而符合這種原則的架構就稱之為RESTful架構。
表現:
通過 get /library/1/book/2 這種風格的URI來訪問控制器並傳遞引數
其中get是不出現在URI中的,而是一種操作方式(get、post、delete、put),控制器通過判斷請求的方式,來決定呼叫的方法
所以 get /book/1 和 post /book/1 ,雖然訪問的URL完全一樣,但是根據請求方式的不同,實際上呼叫的是控制器內不同的方法
實現:
使用 REST_Controller 擴充套件 CI_Controller
通過路由重寫,可以使用非正常格式的 URL 訪問對應的物件方法
通過 REST_Controller 判斷請求的型別,並將URL中的引數交給相應的控制器處理
如果通過 GET 傳送請求到URL www.test.com/index.php/user/1,
那麼會自動呼叫 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') 來分別獲取到引數 foo 和 1
如果通過 POST 傳送請求到URL www.test.com/index.php/user/login
那麼會自動呼叫 User 控制器的 login_post() 方法,通過形如 $this->post('name') 分別獲取對應的引數
PUT\DELETE 同理
返回資料:
控制器中相應的函式經過一系列處理後,需要返回包含足夠資訊的json格式字串(根據具體需求)
通過形如下面的方法返回json格式的字串:
表現:
通過 get /library/1/book/2 這種風格的URI來訪問控制器並傳遞引數
其中get是不出現在URI中的,而是一種操作方式(get、post、delete、put),控制器通過判斷請求的方式,來決定呼叫的方法
所以 get /book/1 和 post /book/1 ,雖然訪問的URL完全一樣,但是根據請求方式的不同,實際上呼叫的是控制器內不同的方法
實現:
使用 REST_Controller 擴充套件 CI_Controller
通過路由重寫,可以使用非正常格式的 URL 訪問對應的物件方法
通過 REST_Controller 判斷請求的型別,並將URL中的引數交給相應的控制器處理
如果通過 GET 傳送請求到URL www.test.com/index.php/user/1,
那麼會自動呼叫 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') 來分別獲取到引數 foo 和 1
如果通過 POST 傳送請求到URL www.test.com/index.php/user/login
那麼會自動呼叫 User 控制器的 login_post() 方法,通過形如 $this->post('name') 分別獲取對應的引數
PUT\DELETE 同理
返回資料:
控制器中相應的函式經過一系列處理後,需要返回包含足夠資訊的json格式字串(根據具體需求)
通過形如下面的方法返回json格式的字串:
$data = ['name'=>'','age'=>''];
$this->response($data);