Запрос прокси в локальный файл - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть такой прокси-сервер:

proxy: {
  "/api/smth": {
    target: "http://api.example.com/",
    secure: false,
    changeOrigin: true,
  },
}

Теперь я хочу перенаправить вызовы API /api/*/meta в локальные файлы %PROJ_ROOT%/meta/*.json.

Как мне это настроить?

1 Ответ

0 голосов
/ 01 апреля 2020

Простая версия:

proxy: {
  "/api/*/meta": {
    selfHandleResponse: true,
    bypass(req, resp) {
      const id = req.url.match(/api\/([-\w]+)\/meta/)[1];
      resp.header("Content-Type", "application/json");
      fs.createReadStream(`./meta/${id}.json`).pipe(resp);
    },
  },
  "/api/smth": {
    target: "http://api.example.com/",
    secure: false,
    changeOrigin: true,
  },
}

Версия с кодом состояния:

proxy: {
  "/api/*/meta": {
    selfHandleResponse: true,
    bypass(req, resp) {
      const id = req.url.match(/api\/([-\w]+)\/meta/)[1];
      const jsonStream = fs.createReadStream(`./meta/${id}.json`);

      jsonStream.on("open", () => {
        resp.header("Content-Type", "application/json");
        jsonStream.pipe(resp);
      });

      jsonStream.on("error", err => {
        resp.status(err.code === 'ENOENT' ? 404 : 500);
        resp.send(err);
      });
    },
  },
  "/api/smth": {
    target: "http://api.example.com/",
    secure: false,
    changeOrigin: true,
  },
}
...