2012-12-07 3 views
5

내 REST 서버에서 모든 요청에 ​​access_token이 있어야합니다. 즉, 게시 데이터에서 access_token을 속성과 함께 제출해야합니다.backbone.js에 access_token 추가

GET, PUT, POST 및 DELETE 요청마다 access_token을 추가하도록 backbone.js를 어떻게 구성합니까?

감사합니다.

답변

1

백본은 AJAX 요청에 jQuery/Zepto를 사용하므로 해당 라이브러리에서 사용할 수있는 기능을 사용할 수 있습니다.

jQuery에서 작성한 모든 XHR 호출에 사용자 정의 헤더를 추가하려면 모든 Ajax 요청 전에 트리거되는 jQuery.ajaxSend event을 사용하고 인수로 수신하는 jqXHR을 수정하십시오. 영업 이익의 의견에 따라

편집 : 아마

전송 된 데이터를 수정하는 가장 간단한 방법은 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 요청에 추가 하시겠습니까? 이러한 동사를 사용하여 요청 본문을 제공하는 것은 일반적이지 않으며 대부분의 웹 서버는 본문을 무시합니다. – jevakallio

+0

사실 저는 https://github.com/philsturgeon/codeigniter-restserver REST 서버를 사용하고 있으며 소스 코드를 확인한 후 요청 본문에 의존하고 있습니다. – Mikko

4

좋아, 내가 jQuery를 그것을 수행하는 방법 방법을 찾은 것 같아요.

$.ajaxSetup (
    { 
     data: { access_token: 'my_access_token' } 
    } 
); 
관련 문제