【问题标题】:How to set Backbone.js to include model name in JSON post?如何设置 Backbone.js 在 JSON 帖子中包含模型名称?
【发布时间】:2014-11-20 19:21:47
【问题描述】:

我一直在开发一个 Backbone.js 项目,该项目同步到我也放在一起的 Google App Engine REST 服务器。我正在使用 Appengine-Rest-Server 项目代码来启用 REST 接口。 IT 运行良好,但存在一个问题。当我向它发布一个新模型时,它需要一个 JSON 格式的帖子:

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

当我使用 python 和 requests 库将此数据发布到我的 REST 服务器时......它工作正常。

Backbone.js 似乎正在发送没有模型名称的 POST 请求

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

现在,我不是 100% RESTful 格式方面的专家,我不确定我的 REST 服务器是否配置不当(在这种情况下,我不希望你们能够帮助编写代码), Backbone.js 是否配置不当,或者这两种格式是否都可能是 RESTful,我只需要弄清楚如何让骨干网添加到模型名称中。

最后,这些格式中的一种或两种与真正的 RESTful API 兼容吗?如果在 JSON 中要求模型名称并不严重违反制作 RESTful API,那么有谁知道我可以如何让 Backbone 以正确的格式发送帖子请求?

谢谢!

【问题讨论】:

标签: javascript json google-app-engine rest backbone.js


【解决方案1】:

最优雅的方式:

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
    }
});

【讨论】:

  • 太棒了!是的,这很完美。我不确定 Backbone.js 中是否有设置来切换这种输出。这是我的 REST 服务器要求的一种相对不常见的格式吗?再次感谢您的帮助!我不能投票给你,因为我没有足够的声誉......哈哈。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-15
相关资源
最近更新 更多