我正在构建由传统REST API支持的Backbone.js模型。当我在服务器上创建新资源时,不是返回新创建的资源的JSON,而是返回新创建的资源的id的纯文本,以及可以获取资源的Location头中的相对URL。
例如,我发布:
{ "firstName": "Joe", "lastName": "Blow" }
到http://fakeserver.com/people
和(成功时)普通/文本响应的主体可能是:" 1234"。响应的状态为201,Location标头为http://fakeserver.com/people/1234
。如果我从该位置URL获取,它将具有
{ "id": 1234, "firstName": "Joe", "lastName": "Blow" }
如何覆盖模型上的同步函数以适应此约定而不是默认的Backbone.js约定?
为了澄清,目前还没有Backbone.js版本 - 我正在尝试创建一个新版本。以jQuery为基础的旧方法是:
$.ajax({
type: 'POST',
url: submitURL,
data: $.toJSON(person),
success: function(data, status, request) {
showSuccessMessage();
closeDialog();
},
dataType: 'json',
contentType: 'application/json'
});
showSuccessMessage和closeDialog的细节并不重要 - 只是为了证明基本上我们只是忽略了响应的内容并抛弃了原始对象。
答案 0 :(得分:0)
使用parse处理简单文本响应: http://backbonejs.org/#Model-parse
parse : function(response, options){
console.log(response, options);
var data = this.toJSON(): //current model to hash
data.id = response; <- assuming that response is a simple text plain id
return data;
}
您还可以使用sync覆盖ajax调用中的某些内容(选项哈希中不支持)。 http://backbonejs.org/#Model-sync