我现在是前端开发人员,有一个项目很好用BackboneJS,服务端是别人写的。有没有人可以告诉我如何以非 RESTful 方式覆盖删除、更新、添加等?服务器端的 URL 可能是这样的:
- 添加:
www.domain.com/addBookById
- 消除:
www.domain.com/removeBookById
非常感谢!!
我现在是前端开发人员,有一个项目很好用BackboneJS,服务端是别人写的。有没有人可以告诉我如何以非 RESTful 方式覆盖删除、更新、添加等?服务器端的 URL 可能是这样的:
www.domain.com/addBookById
www.domain.com/removeBookById
非常感谢!!
Backbone 用于Backbone.sync
管理与服务器的所有通信。对你来说有两件重要的事情sync
;首先,它看起来像这样:
Backbone.sync的方法签名是
sync(method, model, [options])
- 方法– CRUD 方法(
"create"
、"read"
、"update"
或"delete"
)- model - 要保存的模型(或要读取的集合)
- options – 成功和错误回调,以及所有其他 jQuery 请求选项
第二个是您可以sync
在每个模型和每个集合的基础上覆盖。因此,您可以将自己的sync
实现添加到模型中:
var M = Backbone.Model.extend({
sync: function(method, model, options) {
//...
},
//...
});
如果您查看,method
您可以决定使用哪个 URL 以及您是否正在执行 GET、POST、...请求。model
它将告诉您要发送到服务器的数据。您需要合并options
到$.ajax
要使用的选项中。看一下 的标准实现Backbone.sync
,它非常简单,应该向您展示您需要做什么:只需替换 URL 处理并删除一些您不关心的功能(例如emulateHTTP
和emulateJSON
)。
在您的情况下,最好的选择是像Backbone.service这样的插件。它是非宁静或半宁静 api 的骨干服务。
// define server targets / endpoints
var targets = {
login: ["/login", "post"],
signup: ["/signup", "post"],
logout: ["/logout", "get"],
search: "/search" // defaults to get
resetPassword: ["/resetpassword", "post"],
updateSettings: ["/updateSettings", "post"]
};
// standalone service
var service = new Backbone.Service({ url: "http://localhost:5000", targets: targets });
// extend backbone model
var User = Backbone.Model.extend(service);
你可以像这样使用它:
var user = new User();
user.login({ username: 'bob', password: 'secret' });
这是修改后的 Backbone.js ajax 调用的示例:
var Forecast = Backbone.Model.extend({
url: function() {
return "http://api.wunderground.com/api/7eaec3b21b154448/conditions/q/" + this.get( "zip" ) + ".json";
},
parse : function( data, xhr ) {
var observation = data.current_observation;
return {
id: observation.display_location.zip,
url: observation.icon_url,
state: observation.display_location.state_name,
zip: observation.display_location.zip,
city: observation.display_location.city,
temperature: observation.temp_f
};
}
});