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
当前查询的集合。
我对 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
当前查询的集合。