經過php
GET /library/1/book/2git
這種風格的 URI 來訪問控制器並傳遞參數, 其中 GET 是不出如今 URL 中的,而是表明一種操做方式(GET、POST、DELETE、PUT),控制器經過判斷請求的方式,來決定最終調用的方法。 因此github
GET /book/1json
和架構
POST /book/1函數
雖然訪問的 URL 徹底同樣,可是根據請求方式的不一樣,實際上調用的是控制器內不一樣的方法codeigniter
使用 REST_Controller 擴展 CI_Controller,post
根據業務需求,對路由進行重寫,能夠使用非正常格式的 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);
複製代碼