I have recently faced such problem, I solved this by listing all my urls and used $interpolate
service to resolve all urls by using a certain base url.
Something like this, creating a Utils
service with a method stringResolver()
that interpolates each property value and assigning it to the REST
services URLS
property.
.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;
});