Можете ли вы прокси двух конечных точек одного и того же API в веб-сервере разработчиков?

Я пытаюсь настроить систему для удовлетворения новых требований к нашему продукту, когда мы используем один и тот же API-интерфейс на двух разных конечных точках. Итак, мы начинаем с создания его в тестовой среде, вызывая что-то вроде https://testenv.com/api/createExperiment, Затем, чтобы перевести его в режим реального времени, нам нужно вызвать тот же API, но другой хост, так https://liveenv.com/api/createExperiment,

Чтобы имитировать это для тестирования и разработки, я теперь запускаю два json-сервера с одним и тем же API, один на localhost:9000 и другой в localhost:9001,

Так что вопрос использования webpack-dev-server мы можем прокси / карту 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'],
  },
]

},

0 ответов

Другие вопросы по тегам