主干js中的非标准restapi
我正在构建由遗留REST API支持的Backbone.js模型。当我在服务器上创建新资源时,它不会返回新创建资源的JSON,而是返回新创建资源id的纯文本,以及可以获取资源的位置标头中的相对URL 例如,我发布:主干js中的非标准restapi,rest,backbone.js,Rest,Backbone.js,我正在构建由遗留REST API支持的Backbone.js模型。当我在服务器上创建新资源时,它不会返回新创建资源的JSON,而是返回新创建资源id的纯文本,以及可以获取资源的位置标头中的相对URL 例如,我发布: { "firstName": "Joe", "lastName": "Blow" } 到http://fakeserver.com/people 如果成功,纯文本响应的主体可能是:1234。响应的状态为201,位置标头为http://fakeserver.com/people/12
{ "firstName": "Joe", "lastName": "Blow" }
到http://fakeserver.com/people 如果成功,纯文本响应的主体可能是:1234。响应的状态为201,位置标头为http://fakeserver.com/people/1234. 如果我从该位置获取URL,它将
{ "id": 1234, "firstName": "Joe", "lastName": "Blow" }
如何覆盖模型上的sync函数以适应此约定而不是默认的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的细节并不重要——只是为了证明我们基本上只是忽略了响应的内容,并将原始对象扔掉。使用parse处理简单的文本响应: 您还可以使用sync覆盖ajax调用中选项散列中不支持的内容。
请包含用于发布到此服务器的Backbone.js代码。此代码目前还没有Backbone.js版本,但发布到服务器将不会覆盖标准同步功能。只是处理不同的响应。然后请包括处理响应所用的代码。好的,我已经更新了问题,希望能澄清。处理响应的旧代码基本上忽略了响应,只是它成功了。我考虑过使用parse,但这也会影响fetch,对吗?是的,您可以使用选项来知道请求是什么,并且仅当它是save时才进行修改。在Chrome控制台中检查选项的值。
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;
}