2013-03-01 3 views
13

하나의 리소스에 매핑하려는 URL 경로가 여러 개 있습니다. 그러나 불리는 함수를 기반으로 URL을 변경하는 방법을 잘 모르겠습니다. 예를 들어 : 쿼리의 최종 도착 매핑 allProduct으로는, 그러나 파괴/삭제 /의 라인을 따라 뭔가 될 것/같습니다 난 그냥 PARAM로 URL을 넣어 필요단일 서비스에 대한 여러 라우팅 URL AngularJS

service.factory('ProductsRest', ['$resource', function ($resource) { 
    return $resource('service/products/:dest', {}, { 
     query: {method: 'GET', params: {}, isArray: true }, 
     save: {method: 'POST'}, 
     show: { method: 'GET'}, 
     edit: { method: 'GET'}, 
     update: { method: 'PUT'}, 
     destroy: { method: 'DELETE' } 
    }); 
}]); 

답변

24

각 동작에 대해 url 인수를 무시할 수 있습니다. 특별히 이것에 대해서는 url: {...} 인수입니다. 당신의 예에서

:

service.factory('ProductsRest', ['$resource', function ($resource) { 
    return $resource('service/products/', {}, { 
     query: {method: 'GET', params: {}, isArray: true }, 
     save: {method: 'POST', url: 'service/products/modifyProduct'}, 
     update: { method: 'PUT', url: 'service/products/modifyProduct'} 
    }); 
}]); 
17

ID입니다.

service.factory('ProductsRest', ['$resource', function ($resource) { 
    return $resource('service/products/:dest', {}, { 
     query: {method: 'GET', params: {dest:"allProducts"}, isArray: true }, 
     save: {method: 'POST', params: {dest:"modifyProduct"}}, 
     update: { method: 'POST', params: {dest:"modifyProduct"}}, 
    }); 
}]); 
+0

는 어떻게 이들 각각 전화를 했습니까? 저장을 호출하기를 원한다고 가정하면 ProductsRest.save(); ? – user20358

+1

멋진 솔루션이지만 mikemueller 솔루션을 선호하는 경우도 있습니다. –