Search code examples
angularjsrestrestangular

Is it possible to use RestAngular.setBaseUrl for two api access points?


Is it possible to work with Restangular with 2 different APIs? I would like to have setBaseUrl() for both.


Solution

  • just create two or more Restangular service and config them as you want and inject your module which one you want to use...

    UPDATE

    this code from restangular github page

    // Global configuration
    app.config(function(RestangularProvider) {
       RestangularProvider.setBaseUrl('http://www.global.com');
       RestangularProvider.setRequestSuffix('.json');
    });
    
    //First Restangular Service
    app.factory('FirstRestangular', function(Restangular) {
       return Restangular.withConfig(function(RestangularConfigurer) {
          RestangularConfigurer.setBaseUrl('http://www.first.com');
       });
    });
    
    //Second Restangular Service
    app.factory('SecondRestangular', function(Restangular) {
       return Restangular.withConfig(function(RestangularConfigurer) {
          RestangularConfigurer.setBaseUrl('http://www.second.com');
       });
    });
    

    instead of global config (although you can still set global config for shared properties) create Restangular factories like these and inject them your controller...

    // Let's use them from a controller
    app.controller('MainCtrl', function(Restangular, FirstRestangular, SecondRestangular) {
    
      // GET to http://www.google.com/users.json
      // Uses global configuration
      Restangular.all('users').getList()
    
      // GET to http://www.first.com/users.json
      // Uses First configuration which is based on Global one, therefore .json is added.
      FirstRestangular.all('users').getList()
    
      // GET to http://www.second.com/users.json
      // Uses Second configuration which is based on Global one, therefore .json is added.
      SecondRestangular.all('users').getList()
    });