删除Webpack代理中匹配的`/ api`路径

时间:2016-02-16 12:20:30

标签: webpack webpack-dev-server node-http-proxy

我在http://localhost:9090/运行后端服务。所有以/api/*开头的来电都应转发给它,前面没有/api。因此,当我致电http://localhost:8080/api/my/route时,它应代理http://localhost:9090/my/route

如果我使用以下选项:

proxy : [{
  path : '/api/*',
  target : 'http://localhost:9090'
}]

调用http://localhost:8080/api/my/route时,后端服务会抱怨它无法找到路由/api/my/route

文档建议我可以使用node-http-proxy中的任何选项,但我无法确定要使用的正确选项。

我需要使用哪些选项来获得所需的结果?

2 个答案:

答案 0 :(得分:7)

从webpack-dev-server版本> = 1.15.0开始,您可以使用记录在案的pathRewrite

proxy: {
  '/api': {
    target: 'https://other-server.example.com',
    pathRewrite: {'^/api' : ''}
  }
}

答案 1 :(得分:1)

已编辑,版本< = 1.14.1 您可以使用“重写”选项。这是一个函数,将为每个匹配模式的请求调用(例如:'/ api / *')。该函数必须与签名函数(req,proxyoptions){}

匹配

像这样:

proxy : [{
  path : '/api/*',
  target : 'http://localhost:9090',
  // bypass
  rewrite: function(req, options) {
    // manipulate req here 
    // in your case I think it's removing the /api part of url
  }
  // 
}]