Webpack 删除Web包代理中匹配的“/api”路径
我有一个后台服务正在运行。所有以Webpack 删除Web包代理中匹配的“/api”路径,webpack,webpack-dev-server,node-http-proxy,Webpack,Webpack Dev Server,Node Http Proxy,我有一个后台服务正在运行。所有以/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/*
开头的调用都应转发给它,前面不带/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
文档建议我可以使用中的任何选项,但我无法找到正确的选项
我需要使用哪些选项来获得所需的结果?编辑的对于版本编辑的对于版本从webpack dev server version>=1.15.0开始,您可以使用文档中的:
从webpack dev server version>=1.15.0起,您可以使用记录在案的:
非常感谢,它很有效!这在网页包dev服务器文档中有记录吗?很好。我通过搜索文档中没有的代码找到了这一点。警告在github上查看了webpack dev server代码的主版本后,我认为在下一个版本中不支持“重写”功能。我将使用旁路函数编辑答案,因为我已经将
重写添加到了。由于bypass已经将响应作为参数传递给注册的处理程序,我不确定bypass应该如何修改请求。你是对的。。。我已经意识到“绕道”是没有用的。我认为“绕过”只有在你想完全绕过特定模式上的代理功能时才有用……看起来重写选项被pathRewrite选项取代了——至少它被文档中的人踢了出来。我接受@Aprillion的答案,以帮助为未来的问题解决者找到最佳答案。非常感谢,这很有效!这在网页包dev服务器文档中有记录吗?很好。我通过搜索文档中没有的代码找到了这一点。警告在github上查看了webpack dev server代码的主版本后,我认为在下一个版本中不支持“重写”功能。我将使用旁路函数编辑答案,因为我已经将重写添加到了。由于bypass已经将响应作为参数传递给注册的处理程序,我不确定bypass应该如何修改请求。你是对的。。。我已经意识到“绕道”是没有用的。我认为“绕过”只有在你想完全绕过特定模式上的代理功能时才有用……看起来重写选项被pathRewrite选项取代了——至少它被文档中的人踢了出来。我接受@Aprillion的答案,以帮助未来的问题解决者找到最佳答案
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
}
//
}]
proxy: {
'/api': {
target: 'https://other-server.example.com',
pathRewrite: {'^/api' : ''}
}
}