2014-11-20 66 views
0

我一直在研究一個Backbone.js項目,它可以同步到一個Google App Engine REST服務器,我也將它放在一起。我正在使用Appengine-Rest-Server項目代碼來啓用REST界面。 IT運作得非常好,但有一個問題。當我發佈一個新模式,它預計的形式JSON職位:如何設置Backbone.js在JSON文件中包含模型名稱?

{ 'modelname' : {'attribute1':'attribute','attribute2':'attribute'}} 

當我使用Python和請求庫這個POST數據到我的REST服務器...它工作正常。

Backbone.js的出現,而不型號名稱一拉

{'attribute1':'attribute','attribute2':'attribute'} 

被髮送POST請求現在,不是什麼格式是100%基於REST的專家,我不知道我的REST服務器是否是配置不當(在這種情況下,我不希望你們能夠幫助代碼),不管Backbone.js是否配置不當,或者這兩種格式是否可能是RESTful,我只需要弄清楚如何獲得骨幹添加模型名稱。

因此,要關閉這些格式中的一種還是兩種格式與真正的RESTful API兼容?如果要求JSON中的模型名稱不是製作RESTful API的嚴重違規,那麼是否有人知道如何讓Backbone以正確格式發送發佈請求?

謝謝!

+0

這可能是有用的:http://www.vinaysahni.com/best-practices-for -a-pragmatic-restful-api – knpsck 2014-11-20 23:09:55

回答

2

最優雅的方式:

YourModel = Backbone.Model.extend({ 

    name: 'modelName', 

    toJSON: function() { 
     var data = {}; 

     data[this.name] = _.clone(this.attributes); // or Backbone.Model.prototype.toJSON.apply(this) 

     return data; 
    } 

}); 

或者你也可以直接將數據傳遞給選項

model.save(null, { 
    data: { 
     // custom format 
    } 
}); 
+0

太棒了!是的,這是完美的。我不確定在Backbone.js中是否有設置來切換這種輸出。這是我的REST服務器要求的相對罕見的格式嗎?再次感謝你的幫助!我無法贊成你,因爲我沒有足夠的聲譽......大聲笑。 – user2938099 2014-11-21 00:07:05

相關問題