我有一个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
吗?有替代品吗?