fetch()
URLに最小限のパラメーターが含まれている(およびを使用している)データへのREST APIを操作することができましたGET
。
POST
リクエストを通じてコレクションを取得するにはどうすればよいでしょうか?
fetch()
URLに最小限のパラメーターが含まれている(およびを使用している)データへのREST APIを操作することができましたGET
。
POST
リクエストを通じてコレクションを取得するにはどうすればよいでしょうか?
また、fetch は Jquery.ajax パラメーターをサポートしているため、呼び出しで type = post を簡単に設定できることにも注意してください。
Messages.fetch({data: {api_key: 'secretkey'}, type: 'POST'});
その他のパラメータ: http://api.jquery.com/jQuery.ajax/
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);
}
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 の代わりに「read」メソッドの POST リクエストを発行する独自の実装を提供できます。http://documentcloud.github.com/backbone/#Syncを参照してください。