CodeIgniter是php中目前優秀的框架之一,功能十分強大,但我們往往會忽視它在webservice方面的一些強大功能。在本文中,將會介紹如何使用CodeIgniter框架,為你的web應用程序建立RESTful API服務,并演示如何讓創建的API和其他RESTful風格的webservices,比如Facebook或者Twitter進行交互。
第一部分 搭建RESTful服務
步驟1 下載并設置DEMO
我們提供了相關的基礎框架示例程序下載,以方便本文的接下來的討論。下載地址在:http://github.com/philsturgeon/codeigniter-restserver,如下圖,只需要點download sources即可:
下載后,解壓打開后,你會發現示例程序中已經整合好codeigniter,為了讓其運行起來,我們修改application/config /config.php文件,設置好base_url為當前應用的虛擬目錄,比如我們把示例程序命名為resetserver,則config.php文件設置為如下圖所示:
步驟2 分析URL
接下來,我們來分析一下在示例程序中的example_api控制器中的一些URL,結合RESTful講解其含義,首先在瀏覽器中,運行http://localhost/restserver,將會看到如下界面:
這里有五個示例,其中每個示例的鏈接都是以RESETful的形式給出的,下面我們分析其含義。注意這些都是由application/controller/example_api.php這個控制器產生的,我們分析下這些相關的URL,如下圖:
其中,可以看到這種形式很象CodeIgniter中的MVC架構的鏈接,但要注意到,傳統的CodeIgniter中的有點不同,在鏈接的最后一部分,我們稱為Resource資源。有一點RESTful知識的朋友可能知道,在RESTful中,把要操作的對象都叫資源,而且對資源是通過HTTP方式進行相關操作,比如增加,刪除,編輯和查詢。我們來進一步看下圖的鏈接結構,如圖:
這里,進一步列出了請求URL的格式,跟著Resource后的是參數名以及其值,還有就是返回數據的顯示格式,上圖是指定了用json的格式返回。比如下圖指定了三類返回的數據格式:
由于我們這里要把要提供的服務設計成RESETful的webservices方式供用戶調用,所以這里我們設計了多種數據結果集返回的形式,有XML,JSON,HTML,CSV等方式。