在我目前的环境中,这有效:
router.get("/test", function(req,res,next){
request({
uri: 'http://my_virtual_machine:8080/rest/stuff/test',
}).pipe(res)
})
这样,当我向http://localhost:3000/test
发送请求时,我会收到http://my_virtual_machine:8080/rest/stuff/test/
的预期回复。但是,我宁愿不重写每一个api。
有没有办法简单地将req.path
传递给虚拟机?
我试过了:
router.all("*", function(req,res,next){
request({
uri: 'http://my_virtual_machine:8080/' + req.path,
}).pipe(res)
})
但是当我请求http://localhost:3000/test
时,我收到此错误 -
GET http://localhost:3000/test 404 (Not Found)
另外,我必须发送所有HTTP命令(GET,POST,PUT等),这就是我使用all
的原因,因为我理解all
“匹配所有HTTP动词“[doc]。
答案 0 :(得分:0)
我将router.all
更改为router.use
,并删除了路径参数。这是有效的:
router.use(function(req,res,next){
request({
uri: 'http://my_virtual_machine:8080' + req.path,
}).pipe(res)
})
感谢@yBrodosky的评论,这使我朝着正确的方向前进。阅读docs for router.use
后,我看到它没有路径参数时,它适用于所有网址。因为我使用它作为VM访问的严格管道(为了应用访问控制头),这就是我必须要做的。