Можете ли вы прокси двух конечных точек одного и того же API на сервере веб-пакетов? - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь настроить систему для удовлетворения новых требований к нашему продукту, когда мы используем один и тот же 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'],
  },
]

},

...