Я использую несколько определений ресурсов Angular JS $, все из которых извлекают свой базовый URL из службы конфигурации. Например:
$resource(config.baseURL() + '/api/v2/foo/:id', {id: '@id'})
$resource(config.baseURL() + '/api/v2/bar/:id', {id: '@id'})
Причина этого заключается в том, что базовый URL-адрес может быть изменен с помощью параметра строки запроса при первом загрузке приложения.
Я понял, что (очевидно, ретроспективно) URL-адрес, используемый ресурсом $, инициализируется только один раз, поэтому можно получить условие гонки, когда URL-адрес для определенного ресурса $инициализируется до того, как будет обработан параметр строки запроса базового URL-адреса с. Поэтому я попытался изменить объявление $resource на это:
$resource(':baseURL/api/v2/foo/:id', {baseURL: config.baseURL(), id: '@id'})
К сожалению, базовый URL-адрес получает экранирование - //
преобразуется в %2F%2F
- поэтому весь URL-адрес не работает должным образом.
Есть ли способ подавить экранирование для этого параметра? (или, может быть, лучший способ решить проблему в целом)?