Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
主干js中的非标准restapi_Rest_Backbone.js - Fatal编程技术网

主干js中的非标准restapi

主干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

我正在构建由遗留REST API支持的Backbone.js模型。当我在服务器上创建新资源时,它不会返回新创建资源的JSON,而是返回新创建资源id的纯文本,以及可以获取资源的位置标头中的相对URL

例如,我发布:

{ "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;
}