gpt4 book ai didi

javascript - BackboneJS 模型/集合 urlRoot/URL 的意义

转载 作者:行者123 更新时间:2023-12-02 17:31:03 25 4
gpt4 key购买 nike

假设我有一个 Person 模型/集合,如下所示;

define([
'base/BaseModel'
], function(BaseModel) {
var Person = BaseModel.extend({
idAttribute: "personId",
urlRoot: "manapp/person/",
defaults: {
"personId": null
}
return Person;
});

define([
'base/BaseCollection',
'model/Person'
], function(BaseCollection, Person) {
var PersonCollection = BaseCollection.extend({
url: "manapp/person",
model: Person
});
return PersonCollection;
});

如您所见,我在 model/collection 中有一个 urlRoot/url 属性。

我的问题是指定此属性的值到底有什么意义?是只针对对应的REST资源吗?如果是,是否仅适用于 GET 操作?另外,您具体什么时候使用它们的模型和集合?

最佳答案

urlRoot 和 url 定义请求发送到的服务器路径。

编辑:来自 Backbone 文档:

网址:

Returns the relative URL where the model's resource would be located on the server. If your models are located somewhere else, override this method with the correct logic.

网址根:

Specify a urlRoot if you're using a model outside of a collection, to enable the default url function to generate URLs based on the model id. "[urlRoot]/id" Normally, you won't need to define this.

当您使用后端 MVC 框架(例如实现 REST api 的 Laravel)时,您可以在路由器中定义路径并处理从 Controller 对象到此路径的请求。
我将使用 Laravel 作为说明,因为这很清楚。

当您定义例如:

urlRoot: "/api_v1/entities/parents"

Laravel 实现了“资源丰富”的 Controller ,可以处理发送到服务器上特定 urlRoot 的不同 REST 调用:

Route::resource('entities/parents', 'ParentsController');

其中“ParentsController”实现了处理可能发生的不同 REST 调用的一组方法。

“GET”不是您可以使用的唯一 HTTP 动词,还可以使用“POST”、“PUT”或“DELETE”。

在主干中:对于“GET”,您可以在对象上调用“fetch()”。
对于“POST”,您可以在对象上调用“save()”。
对于“DELETE”,您可以在对象上调用“destroy()”。
对于“PUT”,您可以在更新获取的模型之后对对象调用“save()”。例如:

    var parent_model = new Parent_model({'id': 1}); 
parent_model.fetch();
parent_model.set('parent_name', 'some_parent');
parent_model.save();

在上面的示例中,“PUT”请求被发送到以下路径:

/api_v1/entities/parents/1

Controller 实现了一个处理服务器上 REST 调用的函数,如下所示:

public function update($id){ //Update code db here }; 

除了这些标准的 REST 调用之外,Laravel 还实现了一个“index”方法,该方法不采用 id 作为参数,并处理通用的“GET”请求。
我倾向于使用它从服务器获取集合:
例如,父项的 index() 方法将返回所有父项,并且不适用于某一特定父项记录。

希望有帮助。

关于javascript - BackboneJS 模型/集合 urlRoot/URL 的意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23060233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com