2014-01-29 38 views
1

我有一个Backbone应用程序,使用Codeigniter作为后端。现在,要显示来自我的数据库的数据,我使用RESTful API获取数据并将其作为JSON传递给Backbone。我想要获取的数据是来自A-Z的频带名称以及始终相同的数据:band_id和band_name。因此,为了这个目的,我想创建一个单一的骨干模型,它应该告诉集合要处理的数据。所以在我笨的设置,在application -folder->controllers -folder我创建了一个api -folder,我在那里创建了一个artist.php -file,基本上是这样的:BackboneJS + Codeigniter - RESTful API - 如何创建一个单一的大API?

<?php 

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

class artists extends REST_Controller{ 

// BANDS WITH LETTER A 
public function a_get() 
{ 
$this->load->database(); 
$sql = "SELECT band_id, band_name FROM `bands` WHERE bands_name LIKE 'A%' LIMIT 100"; 
$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); 
} 
} 

public function a_put() 
{ 
// Update 
} 

public function a_post() 
{ 
// Post/insert 
} 

public function a_delete() 
{ 
// delete 
} 

// BANDS WITH LETTER B 
public function b_get() 
{ 
$this->load->database(); 
$sql = "SELECT band_id, band_name FROM `bands` WHERE band_name LIKE 'B%' LIMIT 10"; 
$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 b!'), 404); 
} 
} 

public function b_put() 
{ 
// Update 
} 

public function b_post() 
{ 
// Post/insert 
} 

public function b_delete() 
{ 
// delete 
} 
... LETTER C code 
... LETTED D code etc. etc. 
?> 

我的骨干示范会是什么样子这样的:

function($, Backbone) { 
var BandModel = Backbone.Model.extend({ 
    url: "../myproejct/index.php/api/bands/", 

    defaults: { 
     "band_id": ' ', 
     "band_name": ' ' 
    } 
}); 

return BandModel; 
}); 

和收集是这样的:

function(Backbone, BandModel) { 
var BandCollectionA = Backbone.Collection.extend({ 
    model: BandModel, 
    url: "../myproject/index.php/api/bands/a" 
}); 

return BandCollectionA; 
}); 

所以我的问题是:我可以这样做吗?我可以像这样做API,artists.php吗?有替代品吗?

回答

0

CodeIgniter支持控制器中的子文件夹,所以你可以像你描述的那样组织它们。

否则,您可以考虑为CodeIgnter HMVC。这是HMVC的选择,但你可以在网上找到其他的。

这里是链接,如果你有麻烦,希望REST服务的CI中一个很好的教程:Tuts