转发表示js路由到其他服务器

我正在写一个express.js应用程序,并想从另一台服务器的某些路由。

Express提供了一些以api.example.com/v1/*开头的路线。 我希望任何以/ad/hoc/开头的path被转发到另一个服务器,Express提供的响应,例如api.example.com/ad/hoc/endpoint.phpgrampas-lamp-stack.example.com/ad/hoc/endpoint.php送到grampas-lamp-stack.example.com/ad/hoc/endpoint.php

我可以使用res.redirect来完成这个工作,但是我希望通过我的Express应用程序传输响应,并避免将浏览器redirect到另一个IP地址。

app.js

 var express = require('express'); var app = express(); app.get('/v1/users/:id', UserCtrl.get); app.get('/v1/users/search', UserCtrl.search); app.get('/ad/hoc/*', function(req, res) { res.redirect('http://grampas-lamp-stack.example.com' + req.url); } 

我尝试search“代理请求明确”,但我不确定代理是否是我正在做的准确的术语。 如果这个话题还有一个更好的词,或者我想要完成的话,请告诉我。

你可以使用express-http-proxy

是的,代理是你正在寻找的准确的术语。 它将在下面的请求转发到另一个url,因为API也意味着。

这是一个示例用法:

 var proxy = require('express-http-proxy'); var app = require('express')(); app.use('/route/you/want/proxied', proxy('proxyHostHere', { forwardPath: function (req, res) { return '/path/where/you/want/to/proxy/' + req.url } }))