2012-12-07 9 views
5

私のRESTサーバーでは、すべてのリクエストにaccess_tokenが必要です。つまり、POSTingデータでは、access_tokenを属性とともに提出する必要があります。backbone.jsにaccess_tokenを追加

backbone.jsを設定して、GET、PUT、POST、DELETEリクエストごとにaccess_tokenを追加するにはどうすればよいですか?

ありがとうございました。

答えて

1

バックボーンは、AJAXリクエストに対してjQuery/Zeptoを使用するため、これらのライブラリで使用できる機能を使用できます。

jQueryのすべてのXHR呼び出しにカスタムヘッダーを追加するには、すべてのajax要求の前にトリガーされるjQuery.ajaxSend eventを使用して、受け取るjqXHRを引数として変更します。 OPのコメントに基づいて

編集:おそらく

送られたデータを修正する最も簡単な方法は、Backbone.sync関数をオーバーライドすることです。あなたはネイティブ実装をラップし、そこに必要なプロパティを追加することができます。

var nativeSync = Backbone.sync; 
Backbone.sync = function (method, model, options) { 
    //for POST/PUT requests, add access token to the request 
    if(model && (method === 'create' || method === 'update')) { 

    var data = _.extend(model.toJSON(), { 
     access_token: 'token' 
    }); 

    options.data = JSON.stringify(data); 
    } 
    //call the native Backbone.sync implementation 
    nativeSync(method, model, options); 
}; 
+0

こんにちはfencliff。もし私がaccess_tokenをヘッダーではなくデータペイロード自体に入れたいのであれば、どうすれば実現できますか?私は$ .ajaxSend(function(e、jqxhr、settings){settings.data.access_token = 'mytoken'})それをしますか? – Mikko

+0

これも可能ですが、access_tokenをGETとDELETEリクエストに追加してもよろしいですか?これらの動詞を使用してリクエスト本体を提供するのは一般的ではなく、ほとんどのWebサーバーは本体を無視します。 – jevakallio

+0

実際に私はhttps://github.com/philsturgeon/codeigniter-restserver RESTサーバーを使用しています。ソースコードを確認したところ、リクエスト本体に依存しています。 – Mikko

4

さて、私は、私はjQueryの中でそれを行うにはどのような方法を見つけたと思います。

$.ajaxSetup (
    { 
     data: { access_token: 'my_access_token' } 
    } 
); 
関連する問題