技术开发 频道

在CodeIgniter框架中使用RESTful服务

  【IT168 专稿】CodeIgniter是php中目前优秀的框架之一,功能十分强大,但我们往往会忽视它在webservice方面的一些强大功能。在本文中,将会介绍如何使用CodeIgniter框架,为你的web应用程序建立RESTful API服务,并演示如何让创建的API和其他RESTful风格的webservices,比如Facebook或者Twitter进行交互。

  第一部分 搭建RESTful服务

  步骤1 下载并设置DEMO

  我们提供了相关的基础框架示例程序下载,以方便本文的接下来的讨论。下载地址在:http://github.com/philsturgeon/codeigniter-restserver,如下图,只需要点download sources即可:

在CodeIgniter框架中使用RESTful服务

  下载后,解压打开后,你会发现示例程序中已经整合好codeigniter,为了让其运行起来,我们修改application/config/config.php文件,设置好base_url为当前应用的虚拟目录,比如我们把示例程序命名为resetserver,则config.php文件设置为如下图所示:

在CodeIgniter框架中使用RESTful服务

  步骤2 分析URL

  接下来,我们来分析一下在示例程序中的example_api控制器中的一些URL,结合RESTful讲解其含义,首先在浏览器中,运行http://localhost/restserver,将会看到如下界面:

在CodeIgniter框架中使用RESTful服务

  这里有五个示例,其中每个示例的链接都是以RESETful的形式给出的,下面我们分析其含义。注意这些都是由application/controller/example_api.php这个控制器产生的,我们分析下这些相关的URL,如下图:

在CodeIgniter框架中使用RESTful服务

  其中,可以看到这种形式很象CodeIgniter中的MVC架构的链接,但要注意到,传统的CodeIgniter中的有点不同,在链接的最后一部分,我们称为Resource资源。有一点RESTful知识的朋友可能知道,在RESTful中,把要操作的对象都叫资源,而且对资源是通过HTTP方式进行相关操作,比如增加,删除,编辑和查询。我们来进一步看下图的链接结构,如图:

在CodeIgniter框架中使用RESTful服务

  这里,进一步列出了请求URL的格式,跟着Resource后的是参数名以及其值,还有就是返回数据的显示格式,上图是指定了用json的格式返回。比如下图指定了三类返回的数据格式:

在CodeIgniter框架中使用RESTful服务

  由于我们这里要把要提供的服务设计成RESETful的webservices方式供用户调用,所以这里我们设计了多种数据结果集返回的形式,有XML,JSON,HTML,CSV等方式。

  步骤3 分析example_api.php

  接下来,我们打开application/controllers/example_api.php文件,仔细分析其代码。

  首先,在CodeIgniter中,我们要继承CodeIgniter框架本身的REST_Controller.php(这个文件位于libraries目录中),如下所示:

<?
require(APPPATH'.libraries/REST_Controller.php');

class Example_api extends REST_Controller {

}
?>

   接着我们看其中两个获得资源的方法,分别是user_get()和users_get(),其中user_get()是根据用户id去获得某个用户的信息,而users_get()则获得多个用户的信息,代码框架如下:

<?php
require(APPPATH'.libraries/REST_Controller.php');

class Example_api extends REST_Controller {

    
function user_get()
    {
        
// 获得一个用户的信息
    }

    
function users_get()
    {
        
//获得多个用户的信息
    }
}
?>
0
相关文章