REST APIからfetch()
データへのURLに最小限のパラメーターが含まれる(そしてGET
を使用する)データを処理することができました。
どのようにしてPOST
リクエストを通じてコレクションを取得しますか?
また、fetchはJquery.ajaxパラメータをサポートしているため、呼び出しでtype = postを簡単に設定できます。
Messages.fetch({data: {api_key: 'secretkey'}, type: 'POST'});
その他のパラメーター: http://api.jquery.com/jQuery.ajax/
独自のフェッチ規則をインストールするには、Collectionオブジェクトを拡張する必要がある場合があります。そうすることで、おそらく独自のフェッチ関数を提供するでしょう。何かのようなもの:
fetch : function(options) {
options || (options = {});
var model = this;
var success = function(resp) {
if (!model.set(model.parse(resp), options)) return false;
if (options.success) options.success(model, resp);
};
var error = wrapError(options.error, model, options);
(this.sync || Backbone.sync)('create', this, success, error);
return this;
}
ここでは、「読み取り」の代わりに「作成」を使用します。最初の赤面では、これは私が最初に試すことですが、よりエレガントな方法があるかもしれません。
このアプローチの欠点は、本質的にアプリにフレームワークコードがあり、フレームワークが変更されると問題が発生する可能性があることです。この変更を別のレイヤーに区分化して、新しいフレームワークのリリースで簡単に更新できるようにすることをお勧めします。
Backbone.syncは、モデルを介してサーバーと対話するために使用される関数です。 GETの代わりにPOST 'read'メソッドのリクエストを発行する独自の実装を提供できます。参照 http://documentcloud.github.com/backbone/#Sync
try {
// THIS for POST+JSON
options.contentType = 'application/json';
options.type = 'POST';
options.data = JSON.stringify(options.data);
// OR THIS for GET+URL-encoded
//options.data = $.param(_.clone(options.data));
console.log('.fetch options = ', options);
collection.fetch(options);
} catch (excp) {
alert(excp);
}