Backbone.fetch()清理数据重写

Backbone .fetch() clean data rewriting

本文关键字:数据 重写 fetch Backbone      更新时间:2023-09-26

我想在fetch调用上使用主干进行一个干净的请求。我的API的URL是/users/,我想传递数据:

var users = new UsersCollection({ users_id: "1|2|3" });
users.fetch({
        data: "users_id=1|2|3"
    });

用户是UserModel的集合。

但是url变成了/users/?users_id=1|2|3,但我希望它是/users/1|2|3

我有一个.htaccess,下面是RewriteRule ^(.*)/$ /api.php?fct=$1 [L]

我该怎么做?

我认为使用查询参数来指定RESTapi应该要求的模型比"1|2|3"语法更好,但如果规范是生成/users/1|2|3url,则可以这样实现:

var UsersCollection =  Backbone.Collection.extend({
  initialize: function(models, options){
    this.requestedModelsId = options.modelsId;
  },
  url: function(){
    return "/users/" +  this.requestedModelsId.join("|"); //generates  /users/1|2|3 if for requestedModelsId [1,2,3]
  }
});

var users = new UsersCollection(undefined, {modelsId : [1,2,3]});
users.fetch();

这样,集合就有责任知道要提取什么以及如何提取。