programing

$resource 액션을 사용하여 커스텀헤더를 설정하는 방법

elseif 2023. 3. 10. 21:16

$resource 액션을 사용하여 커스텀헤더를 설정하는 방법

$140이면 다음 작업을 수행할 수 있습니다.

var config = { headers: { 'something': 'anything' } };          
$http.get('url/to/json', config)
    .success(function() {
        // do something…
    })

$resource 참조(작동하지 않음):

var config = { headers: { 'something': 'anything' } };
MyResource.get( 
    config,
    function() { // success
        // do something…
    }
); 

대응하는 서비스를 다음과 같이 선언합니다.

.factory('MyResource', function($resource){
    return $resource('url/to/json');
})

동작하지 않음: config 객체는 http 헤더가 아닌 URL로 이동합니다.

그렇게 할 수 있는 방법이 있나요?

headers위해서$resource는 AngularJS 1.1.1부터 사용할 수 있습니다.사용하고 있는 버전이 올바른지 확인해 주세요.

형식은

$resource('url/to/json', {}, {headers: { 'something': 'anything' }});

[주마 편집] 위가 아닌 것 같아요$resource의 세 번째 파라미터는 달라야 합니다.이게 더 맞는 것 같아요.

$resource('url/to/json', {}, {
    get: {
        method: 'GET',
        headers: { 'something': 'anything' }
    }
});

headers리소스 작업 내의 개체는 다음 두 가지를 모두 지원합니다.static필드의 값이지만dynamic함수에서 반환되는 값입니다.

$resource('url/to/json', {}, {
        get: {
            method: 'GET',
            headers: { 
               'header_static': 'static_value',
               'header_dynamic': dynamicHeaderVal
            }
        }
});

function dynamicHeaderVal(requestConfig){
     // this function will be called every time the "get" action gets called
     // the result will be used as value for the header item
     // if it doesn't return a value, the key will not be present in the header
}

데모 코드

angular.module('Test',['ngResource'])
 .controller('corsCtrl', function ($scope, $http, MyResource) {

  $http.defaults.headers.common['test']= 'team'; //Using $http we can set header also
  MyResource.get();
})
.factory('MyResource', function($resource) {   //Services
  return $resource('url/to/json');
})

JsFiddle 데모

see in Request Header

"Content-Type" 헤더를 사용하려면 === 'content-type'인 데이터 본문이 없는 헤더를 $190 삭제하기 때문에 1.4.7+ 이전 버전의 데이터 본문을 지정해야 할 수 있습니다.1.4.7/angular.js의 #10255 참조

데이터 본문을 지정하지 않고 스푸핑하기 위해 "data: false"를 설정했을 뿐입니다.

$resource('url/to/json', {}, {
    get: {
        method: 'GET',
        data: false,
        headers: { 'something': 'anything' }
    }
});

리소스의 구성 API 개체에 액세스하여 동적 일회성 헤더를 설정할 수 있습니다.

데모 코드

angular.
.factory('Resource',['$resource',function($resource){return $resource(baseUrl+'/resource/:id', {id: '@_id'}, {
update    : {
  method  : 'POST',
  url     : baseUrl+'/resource/:id',
  headers : {
    'custom-header': function(config) {
      // access variable via config.data
      return config.data.customHeaderValue;
    }
  },
  transformRequest: function(data) {
    // you can delete the variable if you don't want it sent to the backend
    delete data['customHeaderValue'];
    // transform payload before sending
    return JSON.stringify(data);
  }
} 
});
}]);

실행하다

Resource.update({},{
  customHeaderValue: setCustomHeaderValue
},
function (response) {
  // do something ...
},function(error){
  // process error
});

언급URL : https://stackoverflow.com/questions/18924217/how-to-set-custom-headers-with-a-resource-action