Backbone - 内置 REST 功能

Backbone - built-in REST capability

我对 Backbone 的内置 REST 功能感到困惑。我的印象是 Backbone 模型在 model.save() 上会自动将 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;
            }
        });
    });

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

例如,更新用户的 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
}

在应用 REST 时,id 通常是集合中包含的项目的唯一标识符(以复数形式表示)。 url /greeting/id 对我来说似乎没有多大意义。

通过查询字符串(问号后面)发送的参数作为filters当前查询的集合。