1

我有以下 RESTful API:

GET /club/1.0/club.json?sport=FO&country=ES

此服务按运动和国家/地区提供俱乐部列表(例如:西班牙足球)

GET /club/1.0/club.json?id=xxxx

该服务提供俱乐部的详细信息

在 Backbone.js 中,我尝试使用以下 URL 获取 Collection::

http://localhost:3000/club/1.0/club.json,

问题:

  1. 我该如何处理版本控制?
  2. 如何指定运动国家所需的参数?

对于我使用这个 urlRoot 的模型:

http://localhost:3000/club/1.0/club.json,

我认为这很简单,因为 save 方法会将/:id添加到可以与我的 ExpressJS 服务器一起使用的 urlRoot 中。

感谢您的回答。

4

2 回答 2

1

我该如何处理版本控制?

如果你有一个保存版本值的全局变量(或其他一些范围变量,这不会改变重点),你可以urlRoot: '/club/' + VERSION + '/club.json'在你的类声明中做类似的事情,或者声明urlRoot为一个函数(没有特别的优势在这里)urlRoot: function() {return '/club/' + VERSION + '/club.json';}

如何指定运动和国家所需的参数?

一种简单的方法是将它们添加到data您的调用选项中fetch(您可以将任何 jQueryajax方法的选项传递给您的 Backbone AJAX 调用)myModel.fetch({data: {sport: 'FO', country: 'ES'}});

于 2013-05-21T14:10:48.410 回答
1

您应该在您的收藏/模型中使用 Backbone 同步进行设置。例子:

收藏:

var ClubCollection = Backbone.Collection.extend({
  model: ClubModel,
  sync: function(method, collection, options){ 
    options = _.extend({}, options, {url: 'club/1.0/club.json');
    return $.ajax(options);
  }
});

模型

var ClubModel = Backbone.Model.extend({
  sync: function(method, model, options){ 
    options = _.extend({}, options, {url: 'club/1.0/club.json');
    switch (method) {
      case 'read':
   options.data = _.extend({}, options.data, {
        id: model.id
       });
  break;
  // case 'delete':
  // break;
  // case 'update':
  // break;
  // case 'create':
  // break;
   }
   return $.ajax(options);
  }
});

然后使用yourCollection.fetch({data:{sport:'FO',country:'ES'}}). 而对于你的模型可以myModel.set('id', 1).fetch()

更新:哦,对于版本控制,您可以直接使用变量而不是数字。

于 2013-05-21T15:45:54.337 回答