我正在测试CodeIgniter的REST模块, 这是我简单的GET功能:
function test_get()
{
if(!$this->get('id'))
{
$this->response(NULL, 400);
}
$query = $this->db->query('select * from test');
$users = $query->result();
$user = @$users[$this->get('id')];
if($user)
{
$this->response($user, 200); // 200 being the HTTP response code
}
else
{
$this->response(array('error' => 'User could not be found'), 404);
}
}
它到目前为止有效,但我不确定为什么当我打开http://.../test/id/1
时我为什么会得到id 2<xml><id>2</id><attribut1>Testdata</attribut1><attribut2>asdfasdf</attribut2><testcol>asf</testcol></xml>
当我打开http://.../test/id/2时,我得到了ID 3。
不应该http://.../test/id/1 - &gt; id 1?
答案 0 :(得分:1)
这是一个一个接一个的问题。您正在为$users
数组(从零开始)编制索引,但您的ID是从1开始的。当您的用户ID存在间隙时,您会遇到更糟糕的问题(您将以随机增量关闭,而不仅仅是1)。试试这个:
function test_get()
{
if(!$this->get('id'))
{
$this->response(NULL, 400);
}
$user = $this->db->where('id', $this->get('id'))->get('test')->first_row();
if($user)
{
$this->response($user, 200); // 200 being the HTTP response code
}
else
{
$this->response(array('error' => 'User could not be found'), 404);
}
}