2016-02-11 24 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); 
});