Codeigniter RESTful API - 如何使用post方法获取数据

时间:2014-03-07 12:08:38

标签: php codeigniter rest backbone.js

我正在使用Codeigniter RESTful API将数据发送到我的Backbone App。例如:

public function a_get()  
{ 
    $this->load->database();
    $sql = "SELECT artist_id, formated_name FROM `artists` WHERE formated_name LIKE 'A%' LIMIT 0, 50";
    $query = $this->db->query($sql);
    $data = $query->result();

    if($data) {
        $this->response($data, 200);
    } else {
        $this->response(array('error' => 'Couldn\'t find any artists with letter a!'), 404);
    }
} 

无论如何,我必须删除LIMIT - 语句,以便显示所有数据,在本例中是带有开头字母“A”的艺术家,这是大量的数据。为此,我不能使用GET方法,因为它截断了LIMIT - 语句上的字符串,所以我必须使用POST方法,但我不知道如何实现这一点。谁知道如何解决这个问题?

提前致谢

2 个答案:

答案 0 :(得分:0)

如果您使用的是philsturgeon's library,那么:

$this->get('blah'); // GET param
$this->post('blah'); // POST param
$this->put('blah'); // PUT param

这是在readme.md。

答案 1 :(得分:0)

Dunno,如果你试过这个,但是让我们说你的POST发送了$ _POST ['letter']。还要记得过滤数据。您可能会在模型中使用它来执行查询或数据修改等操作,但我认为您最终会得到它。

public function a_post()  
{ 
    $letter = ucfirst(substr(mysql_real_escape_string($this->post('letter')), 0, 1));
    $this->load->database();
    if(isset($letter) && !empty($letter))
    {
        $sql = "SELECT artist_id, formated_name FROM `artists` WHERE formated_name LIKE '".$letter."%' LIMIT 0, 50";
        $query = $this->db->query($sql);
        $data = $query->result();

        if($data) {
            $this->response($data, 200);
        } else {
            $this->response(array('error' => 'Couldn\'t find any artists with letter '.$letter.'!'), 404);
        }
    }
    else
    {
        $this->response(array('error' => 'Couldn\'t find any artists because of the empty string!'), 404);
    }
}