У меня есть приложение React, которое работает с REST API, развернутым на том же компьютере, что и приложение React.
В настоящее время в качестве обходного пути я установил рабочий сервер для работы на хосте X.Y.W.Z, поэтому я жестко запрограммировал цель API в файлах React:
const API_HOST = 'http: //X.Y.W.Z: 5000'
Как лучше всего установить пункт назначения API, если я хочу, чтобы он был тем же хостом, что и приложение React, но на другом порту? (Видел несколько сообщений об этом, но ни у кого не было решения, например, здесь и здесь)
Может быть, перенаправить запрос от React Router на WebServer и установить там обратный прокси? Как это можно настроить?
На сервере разработки я использовал атрибут proxy в package.json (как здесь) для пересылки запроса, но он находится на конкретном сервере разработки, и он по-прежнему должен быть жестко запрограммирован.
(Я думаю, что определение не должно зависеть от развернутого хоста (завтра я могу перейти на другой сервер, поэтому я всегда должен устанавливать цель API?)





Измените API_HOST в соответствии со средой узла.
const API_HOST = process.env.NODE_ENV === 'production' ? 'http://X.Y.W.Z' : 'http://X.Y.W.Z:5000';.
И если вы используете прокси для сервера разработки, вы можете указать API_HOST как
const API_HOST = process.env.NODE_ENV === 'production' ? 'http://X.Y.W.Z' : '';
const API_HOST = process.env.NODE_ENV === 'production' ? 'http://X.Y.W.Z' :
'http://X.Y.W.Z:5000';
И если вы используете прокси для сервера разработки, вы можете указать API_HOST как:
const API_HOST = process.env.NODE_ENV === 'production' ? 'http://X.Y.W.Z' : '';
Хм ... похоже, он все еще жестко его кодирует, но в файле package.json. Насколько я понимаю, веб-пакет каким-то образом вводит переменную среды в приложение во время выполнения. Есть ли какая-то переменная среды Hostname? ничего подобного не нашел.