Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在运行时使用AngularJS中的$http$资源时覆盖目标服务器_Javascript_Angularjs - Fatal编程技术网

Javascript 在运行时使用AngularJS中的$http$资源时覆盖目标服务器

Javascript 在运行时使用AngularJS中的$http$资源时覆盖目标服务器,javascript,angularjs,Javascript,Angularjs,我有多个服务提供对api控制器的访问,例如: app.service('adminSvc', function($resource) { return { getTextSample: function() { return $resource('/admin/TextGenerator/GetTextSample').get(); } } }); 有没有比在变量中提供服务器更好的方法 app.service('a

我有多个服务提供对api控制器的访问,例如:

app.service('adminSvc', function($resource) {
    return {
        getTextSample: function() {
            return $resource('/admin/TextGenerator/GetTextSample').get();
        }    
    }
});
有没有比在变量中提供服务器更好的方法

app.service('adminSvc', function($resource) {
    return {
        getTextSample: function(server) {
            return $resource(server + '/admin/TextGenerator/GetTextSample').get();
        }    
    }
});

您可以创建一个配置服务器,用于保存所有基本URI和凭据,这些URI和凭据可以在需要时注入,也可以创建一个通信服务器来处理所有请求,并将相对、路径、方法和参数作为参数,发出请求并返回要在其他服务上处理的承诺。这两种方法都允许您抽象层。第二种方法允许您分离通信,并在您决定切换提供商时提供更大的灵活性,因为您的服务将只处理承诺而不处理实际通信,它们将能够处理网络响应、内存数据、,或者文件数据

我最近遇到了这样的问题,我通过列出我的所有url解决了这个问题,并使用
$interpolate
服务通过使用某个基本url解析所有url

类似这样,使用插入每个属性值并将其分配给
REST
services
url
属性的方法
stringResolver()
创建
Utils
服务

  .factory('Utils', function($interpolate) {
    return {
      stringResolver: stringResolver
    };

    function stringResolver(objectStrings) {
      var string, index;
      for(index in objectStrings)
        objectStrings[index] = $interpolate(objectStrings[index])(objectStrings);
      return objectStrings;
    }
  })

  .factory('REST', function(Utils) {
      var REST = {},
      URLS = REST.URLS = Utils.stringResolver({
        BASE: 'http://my-base-url.com',
        AUTHORIZATION: '{{BASE}}/oauth/access_token',
        REFRESH_AUTHENTICATION: '{{BASE}}/refresh',
        LOGIN: '{{BASE}}/login',
        REGISTER: '{{BASE}}/register',
        USER: '{{BASE}}/user',
        USERS: '{{BASE}}/users/:user_id',
        MODULES: '{{BASE}}/modules/:module_id',
        READINGS: '{{MODULES}}/readings/:reading_id',
        QUESTIONS: '{{READINGS}}/exam/questions/:question_id',
        CHOICES: '{{QUESTIONS}}/choices/:choice_id'
      });

      REST.LOGIN = $resource(REST.URLS.LOGIN);
      REST.REGISTER = $resource(REST.URLS.REGISTER);

      return REST;
  });

这个问题对你有帮助吗?