通过在模型或集合上获取,保存和删除来发送复杂的JSON

时间:2013-09-06 18:02:29

标签: json backbone.js marionette

我们有一个专门构建的内部API,用于构建在Backbone上运行的新软件。 API具有单个URL并将JSON作为输入以确定它需要返回的内容。它本质上允许我使用JSON构建自定义查询,返回我正在寻找的内容。

事情就是这个JSON可以变得非常冗长并且通常是3-4级深度,但有时可能只是几行而只有1级深。

第一个问题:当我fetch()时,如何发送一串JSON和ID?我是否必须将这些参数设置为模型或集合的默认值?

以下是获取特定用户信息的非常简单的字符串示例

{
    "which" : "object",
    "object" : {
        "type" : "customer",
        "place" : "store",
        "customerID" : "14"
    }
}

1 个答案:

答案 0 :(得分:1)

正如其他人所说,使用SOAP可能会遇到挑战,但这不应该是不可能的。骨干模型和集合通过sync操作与服务器通信;你应该能够自定义它。我认为沿着这些方向的东西可能会让球滚动(对于模型):

Backbone.SoapyModel = Backbone.Model.extend({
    sync: function(method, model, options) {
        // force POST for all SOAP calls
        method = 'create';

        options = _.extend(options, {
            // Setting the data property will send the model's state
            // to the server. Add whatever complexity is needed here:
            data: JSON.stringify({
                "which" : "object",
                "object" : model.toJSON()
            }),

            // Set the request's content type
            contentType: 'application/json'
        });

        // Defer the rest to Backbone
        return Backbone.sync.apply(this, [method, model, options]);
    }
});

var SoapyModelImpl = Backbone.SoapyModel.extend({
    url: '/test'
});

var soapTest = new SoapyModelImpl({
    id: 42,
    name: 'bob',
    address: '12345 W Street Dr',
    phone: '867 5304'
});

soapTest.fetch();