Кажется, что библиотека axios
не работает должным образом, и я не знаю, в чем дело.
Сначала объясню. Я новичок в axios
, и компания, в которой я работаю, настроила сервер API, используя nGinx
с proxy pass
.
Допустим, сервер API находится в домене: https://www.api.com
, а конечные точки api
расположены в https://www.api.com/api/
.
Затем мы собираемся создать приложение SSR, используя библиотеку axios
, чтобы сделать запрос к этому серверу, но смысл в том, чтобы использовать proxy settings
из axios
таким образом, чтобы запросы не будут такими: https://www.api.com/api/endpoint
, но такими: https://www.js-app.com/api/endpoint
.
Итак, в настоящее время у меня есть следующий класс:
class WebApiService {
constructor() {
this.deferred = Q.defer();
this.$http = axios.create();
}
async call(config) {
WebApiService._setDefaultApiCallHeader(config);
try {
const result = await this.$http(config);
this.deferred.resolve(result);
} catch( error ) {
this.deferred.reject(error);
}
return this.deferred.promise;
}
static _setDefaultApiCallHeader(config) {
config.headers = config.headers || {};
if (window.sessionStorage['Authorization'] !== 'undefined') {
config.headers['Authorization'] = `Bearer ${window.sessionStorage['Authorization']}`;
}
// HERE I SETUP THE PROXY SETTINGS
if ( /^\/api\//.test(config.url) ) {
config.proxy = config.proxy || {};
config.proxy.host = 'https://www.api.com';
}
}
}
Итак, теперь, когда я использую этот класс из другого места в моем приложении, используя код, подобный этому:
const options = {
method: 'POST',
url: '/api/v0/configs',
data: { domain: window.location.hostname }
};
const websiteConfig = await this.webApiService.call(options);
В консоли браузера я получаю сообщение об ошибке 404, потому что axios
все еще запрашивает вызов API с моего локального хоста, а не с удаленного сервера.
Я получаю такую ошибку:
Также настройки axios
внутри Interceptor запроса таковы:
Так, ты думаешь, я что-то не так делаю? Ты думаешь, я пытаюсь достичь чего-то, что невозможно? Есть ли выход из этой ситуации? Есть идеи, как подойти к этому вопросу?