2014-01-15 194 views
0

我試圖從我的MySQL數據庫中提取數據,所以我可以創建一個API,但我不斷收到錯誤的請求。我的Db有一個包含ID,名稱和狀態的表「category」。Codeigniter RESTful API - HTTP/1.1 400錯誤請求

我的控制器(category.php - I創建了 「控制器」 -folder,其中category.php被置於內部的 「API」 文件夾中)

<?php 

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

class Category extends REST_Controller{ 

public function index_get() 
{ 
    //IF CATEGORY NOT EXIST 
    if(!$this->get('name')) 
    { 
    $this->response(NULL, 400); 
    } 

    //CHECK TO MODEL FUNCTION 
    $category = $this->category_model->get_category($this->get('name')); 

    //IF CATEGORY EXIST 
    if($category) 
    { 
    $this->response($category, 200); // 200 being the HTTP response code 
    } 
} 

public function index_put() 
{ 
    // 
} 

public function index_post() 
{ 
// 
} 

public function index_delete() 
{ 
// 
} 

} 

?> 

和我的模型(category_model.php)

<?php 

class Category_model extends CI_Model{ 

function __construct() { 
    parent::__construct();   
} 

function get_category($name){ 
    $query = $this->db->get('category', array('name'=>$name)); 
    return $query->row_array(); 
} 

} 

?> 

現在,當我進入http://localhost/projectfolder/ci/index.php/api/category/ - 瀏覽器顯示什麼,同樣做控制檯...

問題是什麼?

+0

嘗試此:'http:// localhost/projectfolder/ci/index.php/api/category/index_get' – user2936213

+0

@ user2936213這給出我'{「狀態」:錯誤,「錯誤」:「未知的方法。」} - 但我必須輸入_get? – SHT

回答

-1

您可以嘗試使用print_r()函數檢查數據是否從數據庫中獲取。

+0

嗯好點,你會在哪裏做檢查?自從我得到400,我猜它不會被取走? – SHT

0

試着把你所有的代碼放入if(!$ this-> get('name'))條件。

+0

好的,我把'$ category = $ this-> category_model-> get_category($ this-> get('name'));'在if(!$ this-> get('name'))我得到錯誤'調用一個非對象'成員函數get_category()...: -/ – SHT

0

嘗試加載您的category_model使用 $ this-> load-> model(「category_model」);

+0

我把'$ this-> load-> model(「category_model」);'在'public function index_get (){...}' - 沒有效果...... – SHT

0

好吧我有種解決它自己,但我不知道它是否正確的方式,但它的工作到目前爲止。我所做的只是垃圾的模型,並在控制器中我寫道:現在

public function index_get() 
{ 
    $this->load->database(); 
    $sql = 'SELECT * FROM category'; 
    $query = $this->db->query($sql); 
    $data = $query->result(); 

    $this->response($data, 200); 
} 

,則顯示所有數據!這可能會做得更好,但至少它可以工作... :-)