1

Backbone で動作する、私が構築している新しいソフトウェアで使用するために特別に構築された内部 API があります。API には 1 つの URL があり、JSON を入力として受け取り、何を返す必要があるかを判断します。基本的に、探しているものを正確に返す JSON を使用してカスタム クエリを作成できます。

この JSON はかなり冗長になり、多くの場合 3 ~ 4 レベルの深さになりますが、場合によっては数行で 1 レベルの深さになることもあります。

最初の質問: を実行するときに、ID とともに JSON の文字列を送信するにはどうすればよいfetch()ですか? これらのパラメータをモデルまたはコレクションのデフォルトとして設定する必要がありますか?

特定のユーザーの情報を取得するための非常に単純な文字列の例を次に示します。

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

1 に答える 1

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();
于 2013-09-08T14:45:30.760 に答える