2012-10-09 27 views
27

के लिए हेडर पैरामीटर निर्दिष्ट करने के लिए निम्न कार्य ठीक है, लेकिन मुझे लगता है कि यह वैश्विक रूप से $ httpProvider को संशोधित करता है, जो मैं नहीं चाहता हूं।

angular.module('SessionService', ['ngResource']) 
    .config(function($httpProvider){ 
     $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8' 
    }) 
    .factory('Login', function($resource){ 
     var resource = $resource('/adminui/login',{},{ 
      post:{ 
       method:"POST", 
       isArray:false 
      }, 
     }); 
     return resource; 
    }) 
LoginCtrl = function($scope,Login) { 
    $scope.login = function(){ 
     Login.post($.param({user:$scope.user.username,password:$scope.user.password}),$.noop,$.noop) 
    } 
} 

क्या इसके बजाय ऐसा करने के लिए वैसे भी है?

... 
    .factory('Login', function($resource){ 
     var resource = $resource('/adminui/login',{},{ 
      post:{ 
       method:"POST", 
       isArray:false, 
       headers:{'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'} // ignored 
      }, 
     }); 
     return resource; 
    }) 

"हेडर" पैरामीटर को अनदेखा किया जा रहा है। अनुरोध अभी भी

Content-Type:application/json;charset=UTF-8

हेडर के लिए मेरी मूल्य है ठीक है?

+0

आप इसे देखना चाहेंगे: https://github.com/angular/angular.js/issues/736 – Tosh

उत्तर

63

मैंने पुष्टि की है कि 1.1.3 वास्तव में इसका समर्थन करता है। हालांकि, आपको यह सुनिश्चित करना होगा कि आपको संसाधन सेवा का 1.1.3 संस्करण भी मिल जाएगा। की एक त्वरित परीक्षण:

angular.module('myApp', ['ngResource']). 
    config(['$routeProvider', function($routeProvider) { 
    $routeProvider.when('/', {templateUrl: 'partials/partial1.html',controller: 'MyController'}); 
    $routeProvider.otherwise({redirectTo: '/'}); 
    }]) 

    .controller("MyController", function($scope, Bug) { 
    Bug.post({test:"test"}); 
    }) 

    .factory('Bug', function($resource){ 
    var resource = $resource('/bug',{},{ 
     post:{ 
      method:"POST", 
      isArray:false, 
      headers:{'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'} 
     }, 
    }); 
    return resource; 
}); 

यह हेडर के लिए सेट के साथ एक अनुरोध कर देगा (क्रोम का उपयोग करने की पुष्टि की):

Content-Type:application/x-www-form-urlencoded; charset=UTF-8 

एक त्वरित टिप्पणी, मैं angular- के एक डाउनलोड खोजने में असमर्थ था resource.js, इसलिए मुझे इसे डाउनलोड करने के लिए जिथब वेबसाइट जाना पड़ा। यह here है।

कुछ गिगल्स के लिए, मैंने एक पहेली बनाई। ध्यान दें कि एक असफल पोस्ट कॉल होगा, लेकिन इसके शीर्षलेख सही ढंग से सेट हैं। Example Fiddle

+0

बढ़िया! धन्यवाद :) – DanH

20

जबकि विकास दस्तावेज़ (12 अक्टूबर तक) दिखाते हैं कि ओवरराइडिंग हेडर $ संसाधन में संभव है, इसे अभी तक जारी नहीं किया गया है (v1.0.2 या v1.1.0)। सुविधा v1.0.x और मास्टर शाखाओं में है, हालांकि। उस सुविधा को प्राप्त करने के लिए, आप अभी के लिए v1.0.x शाखा से निर्माण पर विचार कर सकते हैं।

कैसे निर्माण करने के लिए: http://docs.angularjs.org/#H1_4

वैकल्पिक रूप से, आप स्नैपशॉट निर्माण से खींच सकता है: http://code.angularjs.org/snapshot/

लग रहा है इस सुविधा की तरह अगली फिल्म में होंगे।

+0

मैं उस निर्माण को करने का प्रयास करूंगा। लिंक के लिए +1। धन्यवाद! – Shanimal

+6

-1 अंगुलरजेएस से हमें उन चीज़ों को आजमाने की कोशिश करने के लिए जो संभव नहीं हैं! – Lee

संबंधित मुद्दे