Angular : 使用 $resource 拦截特定请求

Angular : intercept specific request with $resource

我是 Angular 的新手,正在研究拦截器。我创建了一个 angular 工厂来从 API 中获取一些数据,就像这样:

app.factory('Connection',['$resource',function($resource) {

    return $resource('url',{param1: '1',param2: '55'},);
}]);

我还创建了看起来像这样的拦截器:

app.factory('connectionInterceptor', function($q,$location) {

    var connectionInterceptor =  {

        response: // code here
        responseError: // code here
    };
    return connectionInterceptor;
});

拦截器运行良好。但它会拦截我所做的每个 http 请求,我想让它对特定的 $resource 起作用。我在 angular $resource 文档中读到,有一种方法可以通过向 $resource 添加拦截器 action/param 来实现。所以我试过了:

app.factory('Connection',['$resource',function($resource) {

    return $resource('http://localhost:8080/api/login',{user: '1',password: '55'}, {}, 
        query: {
            method : 'GET',
            interceptor : 'connectionInterceptor'
        }
    });
}]);

没用。抛出的错误是:Error in resource configuration for action query. Expected response to contain an object but got an array.

我错过了什么?

正如你所说,拦截器是全局设置的。我必须在我的回复中添加一个测试来检查 $resource URL 并添加一些特定的处理。

 module.factory('interceptor', function() {

     var interceptor =  {

        response: function(response) {

           if (response.config.url.startsWith('my url')) {
               // some treatment
           }
           else
               // other treatment
           return response;
        }
        return connectionInterceptor;
});