Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 886
Stepan Suvorov Avatar asked Mar 08 '14 20:03

Stepan Suvorov


2 Answers

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()
});
like image 164
Poyraz Yilmaz Avatar answered Jan 04 '23 11:01

Poyraz Yilmaz


@wickY26 has the right answer, but I wanted to add something important.

If you are going to minify your code, you need to use inline annotation like so:

app.factory('FirstRestangular', [ 'Restangular', function(Restangular) {
   return Restangular.withConfig(function(RestangularConfigurer) {
      RestangularConfigurer.setBaseUrl('http://www.first.com');
   });
}]);

Note the square brackets.

like image 34
zeusstl Avatar answered Jan 04 '23 11:01

zeusstl