php ci rest,在CodeIgniter框架中使用RESTful服务

步骤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()

{

//获得多个用户的信息

}

}

接着我们复习下在RESTful架构中的四类关于资源的操作。

GET:

使用GET去获得一个已经存在的资源的信息。通常我们在浏览器中输入url其实即发出了一个GET的请求。

POST:

使用POST去更新一个已经存在的资源。比如表单中的提交数据行为,都属于POST类型。

PUT:

使用HTTP的报文头的PUT,可以去新建一种资源,目前不是所有浏览器支持,所以本文不作讨论。

DELETE:

使用DELETE去删除一种资源,同样目前不是所有浏览器都支持。

现在我们可以根据四种HTTP RESTful语义去形成如下框架:

require(APPPATH".libraries/REST_Controller.php");

class Example_api extends REST_Controller {

function user_get()

{

// 获得一个用户的信息

}

function user_put()

{

// 创建一个新用户

}

function user_post()

{

//更新用户信息

}

function user_delete()

{

//删除用户信息

}

}

接下来我们充分利用CodeIgniter框架自身的REST_Controller的优势,完善为如下代码:

php

require(APPPATH".libraries/REST_Controller.php");

class Example_api extends REST_Controller {

function user_get()

{

$data = array("returned: ". $this->get("id"));

$this->response($data);

}

function user_post()

{

$data = array("returned: ". $this->post("id"));

$this->response($data);

}

function user_put()

{

$data = array("returned: ". $this->put("id"));

$this->response($data;

}

function user_delete()

{

$data = array("returned: ". $this->delete("id"));

$this->response($data);

}

}

以上代码中包含了如下几个片段,下面逐一讲解:

$this->get() 其中,使用这个从形如index.php/example_api/user?id=1或者如index.php/example_api/user /id/1的连接中获得资源,比如这里就获得其id的值,然后在数组中返回该id对应的数值。

$this->post() 其实是CodeIgniter中调用了其框架的$this->input->post()方法,进行提交操作,并且利用了XSS保护特性。

$this->put() 取curl中提交的或者HTTP协议头的PUT参数的内容。

$this->delete() 取curl中提交的或者HTTP协议头的delete参数的内容。

$this->response() 个方法中,主要是将处理的数据返回给浏览器,你可以指定一个HTTP状态码去表示该次返回结果的状态,比如在数据库中找不到某个记录,可以使用如$this->response(array("error" => "User not found.")去返回结果。

步骤4 与现有应用整合

在下载的示例程序中,我们刚才讲解了重要的部分,接下来讲解如何将下载程序中的关键类与现有的应用整合。下载的应用中,结构如下图:

346b495cceb5a68b226218f2bd6e0590.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值