29

fetch()URLに最小限のパラメーターが含まれている(およびを使用している)データへのREST APIを操作することができましたGET

POSTリクエストを通じてコレクションを取得するにはどうすればよいでしょうか?

4

4 に答える 4

63

また、fetch は Jquery.ajax パラメーターをサポートしているため、呼び出しで type = post を簡単に設定できることにも注意してください。

Messages.fetch({data: {api_key: 'secretkey'}, type: 'POST'});

その他のパラメータ: http://api.jquery.com/jQuery.ajax/

于 2011-09-28T12:50:06.877 に答える
3
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);
}
于 2014-01-07T14:22:48.053 に答える
2

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

ここでは、「読み取り」の代わりに「作成」を使用します。もっとエレガントな方法があるかもしれませんが、これは私が最初に試すものです。

このアプローチの欠点は、基本的にアプリにフレームワーク コードが含まれており、フレームワークが変更された場合に問題が発生する可能性があることです。この変更を別のレイヤーに区分して、新しいフレームワーク リリースで簡単に更新できるようにすることをお勧めします。

于 2011-06-21T16:45:28.093 に答える
2

Backbone.sync は、モデルを介してサーバーと対話するために使用される関数です。GET の代わりに「read」メソッドの POST リクエストを発行する独自の実装を提供できます。http://documentcloud.github.com/backbone/#Syncを参照してください。

于 2011-06-21T16:46:19.607 に答える