2016-02-11 29 views
1

我用角$resource服務,使HTTP調用請求的URL,如

var reportEndpoint = $resource('http://example.org/:id'); 

reportEndpoint.get({id: 6}, function (response, responseHeaders) { 
    $scope.report = response.data; 
    // can I get here the URL that the request was submitted to 
}); 

在由註釋指出的一點,是有一些方法來獲取URL的請求已提交到,在上面的示例中,這將是http://example.org/6

+0

爲什麼要在此時請求的URL? – dnc253

+0

你能更具體嗎?我只是不明白爲什麼會有基於URL的業務邏輯,而不是基於對象的屬性。 – dnc253

+0

任何你不能只做'var reportUrl ='http://example.org/:id,reportEndpoint = $ resource(reportUrl)的原因? – jperezov

回答

1

我想不出任何直接的方式來檢索$資源文檔的URL。另一種替代但不是最佳的方式是使用$httpParamSerializer再次對數據進行編碼並將其附加到URL以重新創建發送請求時使用的那個。

1

您可以爲您的GET請求添加攔截器,並將url附加到響應數據。例如,您可以執行以下操作:

var reportEndpoint = $resource('http://example.org/:id', {}, { 
    get: { 
    method: 'GET', 
    interceptor: { 
     response: function (response) { 
     response.data.requestUrl = response.config.url; 
     return response.data; 
     } 
}); 

reportEndpoint.get({id: 6}, function (response) { 
    $scope.report = response; 

    // returns http://example.org/6 
    console.log($scope.report.responseUrl); 
});