經過 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); 複製代碼