Приложение, которое я разрабатываю, позволяет пользователям изменять IP-адрес сервера (где REST API). Этот адрес хранится в переменной, которая может быть изменена, но проблема в том, что при создании экземпляров службы базовый URL-адрес не может быть изменен. После этого ответа мне удалось изменить URL-адрес некоторых сервисов, но я не могу сделать то же самое для тех, у кого есть действия POST.
Я пробовал несколько конфигураций, но всегда есть проблема. Например, это:
// Services file
app.factory('Bookings', BookingsFactory)
function BookingsFactory($resource, GlobalVariables) {
return $resource('http://:url/api/bookings/:id/', null, {url: '@url'});
}
//Controllers file
Bookings.save(booking, {url: GlobalVariables.IPServer});
Выдает это сообщение об ошибке "net :: ERR_NAME_NOT_RESOLVED", потому что URL-адрес запроса неверен: " http://api/bookings/? End_time = 2015-06-30T09: 30 & name = Reunion & room = 1 & start_time = 2015-06-30T09: 43 & start = true ".
Если я назову это так:
//Services file
app.factory('Bookings', BookingsFactory)
function BookingsFactory($resource, GlobalVariables) {
return $resource('http://:url/api/bookings/:id/', {url: '@url'});
}
//Controllers file
Bookings.save({booking: booking, url: GlobalVariables.IPServer});
Я получаю ошибку 400 BAD REQUEST, и ответ запрашивает контент для всех необходимых полей: "Это поле обязательно".
Я использую AngularJS v1.3.13. Есть ли способ изменить базовый URL-адрес в каждом ходатайстве с помощью этого подхода, даже на запросы POST? Или даже лучше, есть ли способ обновить URL-адрес на каждой фабрике приложения после запуска приложения?
В приложении, над которым я работаю, я использую $ rootScope для хранения URL-адреса базового сервера для всех запросов. Я не знаю, если это хороший способ использовать $ rootScope или нет, но точно, что приложение работает.
К сожалению, я забыл добавить, что я могу изменить базовый URL-адрес во время работы приложения, что вам и нужно.