Backbone js中的非标准REST API

时间:2014-07-02 07:00:29

标签: rest backbone.js

我正在构建由传统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的细节并不重要 - 只是为了证明基本上我们只是忽略了响应的内容并抛弃了原始对象。

1 个答案:

答案 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