Я пытаюсь настроить систему для удовлетворения новых требований к нашему продукту, когда мы используем один и тот же API-интерфейс на двух разных конечных точках.Итак, мы начинаем с создания его в тестовой среде, вызывая что-то вроде https://testenv.com/api/createExperiment
.Затем, чтобы перевести его в режим реального времени, нам нужно вызвать тот же API, но другой хост, поэтому https://liveenv.com/api/createExperiment
.
Чтобы имитировать это для тестирования и разработки, я теперь запускаю два json-сервера с одним и тем же API, одинв localhost:9000
и другое в localhost:9001
.
Итак, вопрос заключается в том, чтобы использовать webpack-dev-server, можем ли мы прокси / map https://testenv.com/ -> localhost:9000
и https://liveenv.com/ -> localhost:9001
(И прежде чем все усомнятся в моем здравом уме, я утверждал, чтоСервер должен делать все это, а не клиент, но теперь мы должны сделать это, потому что мы быстрее справляемся с работой.)
Я могу заставить один прокси работать, используя команду прокси, поэтому у меня есть https://testenv.com/api -> https://localhost:9000
.Я попытался возиться с параметрами маршрутизатора, которые, кажется, что-то делают с именами хостов, но они не работают.Использовал простой router: (req) => (console.log(req.headers);),
, чтобы увидеть, что у меня было доступно, и кажется, что хосты на самом деле не используются ни по крайней мере локально.
let router = {};
if (process.env.JSON_SERVER) {
proxyTarget = `https://localhost:${process.env.JSON_SERVER_PORT}`;
router[getHostName(lineConfig.npApiUrl)] = `https://localhost:${parseInt(process.env.JSON_SERVER_PORT) + 1}`;
router[getHostName(mgmtApiUrl)] = `https://localhost:${process.env.JSON_SERVER_PORT}`;
}
console.log(router);
return [
'@neutrinojs/react',
{
html: {
title: title,
baseHref: resolveBaseName,
config: JSON.stringify(config[line]),
template: path.resolve(__dirname, './neutrino-html.ejs'),
},
devServer: {
proxy: [{
context: ['/v1', '/v2'],
target: proxyTarget,
secure: false,
router,
changeOrigin: false,
}],
historyApiFallback: {
index: resolveBaseName,
},
port: devPort,
open: false,
},
publicPath: resolveBaseName,
env: ['BUILD_NUMBER'],
},
]
},