Backbone - 内置REST功能

时间:2015-06-28 20:26:30

标签: javascript backbone.js

我对Backbone的内置REST功能感到困惑。我的印象是,在model.save()上,Backbone模型会自动将idAttribute标识的值附加到urlRoot的末尾。但是我在网上看到很多例子,比如下面的例子,应用程序必须将id附加到url。这是为什么?哪一个更好?

使用RequireJS的示例:

  define(function(require) {
        var Backbone = require('Backbone');

        return Backbone.Model.extend({
            urlRoot: 'http://rest-service.guides.spring.io/greeting',
            url: function() {
                return this.urlRoot + '?name=' + this.id;
            }
        });
    });

2 个答案:

答案 0 :(得分:2)

Backbone假设您在设计REST API时遵循了一些常见的REST实践。

例如,更新用户的API应公开为:

PUT /users/:id

而不是

PUT /users?id=:id

当然,在必须重写默认URL函数时会出现一些边缘情况,但一般情况下,保留它就意味着您在设计REST API时遵循了最佳实践。

当需要重写时,我能想到的一个案例是当多个ID识别子资源时:

PUT /apps/:appId/schedules/:scheduleId

然后url函数将是:

url: function () {
    return this.urlRoot + '/' + this.appId + '/schedules/' + this.id
}

答案 1 :(得分:1)

应用REST时,id通常是集合包含的项的唯一标识符(以复数表示)。 网址0对我来说似乎没有多大意义。

通过查询字符串(在问号后面)发送的参数作为1, 2 and 3用于当前查询的集合。