首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对本地文件的代理请求

对本地文件的代理请求
EN

Stack Overflow用户
提问于 2020-04-01 17:35:52
回答 1查看 271关注 0票数 0

我有这样的代理配置:

代码语言:javascript
复制
proxy: {
  "/api/smth": {
    target: "http://api.example.com/",
    secure: false,
    changeOrigin: true,
  },
}

现在我想将接口调用/api/*/meta重定向到本地文件%PROJ_ROOT%/meta/*.json

我该如何配置它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-01 20:34:01

简单版本:

代码语言:javascript
复制
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,
  },
}

具有状态代码的版本:

代码语言:javascript
复制
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,
  },
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60967796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档