Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Forward express js route to other server

I'm writing an express.js app and would like to serve certain routes from another server.

Express serves some routes starting with api.example.com/v1/*. I would like any paths starting with /ad/hoc/ to be forwarded to another server and the response served by Express, e.g. api.example.com/ad/hoc/endpoint.php would be piped to grampas-lamp-stack.example.com/ad/hoc/endpoint.php.

I can accomplish this with res.redirect but I'd like to stream the response through my Express app and avoid redirecting the browser to another IP address.

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);
}

I tried searching "proxy requests express" but I'm not sure if proxy is an accurate term for what I'm doing. If there's a better word for this topic or what I'm trying to accomplish, please let me know.

like image 680
Eric Avatar asked Jun 23 '16 18:06

Eric


People also ask

How do I redirect Route Express?

In express, we can use the res. redirect() method to redirect a user to the different route. The res. redirect() method takes the path as an argument and redirects the user to that specified path.

Is Express JS cross platform?

js) is an open-source, cross-platform runtime environment that allows developers to create all kinds of server-side tools and applications in JavaScript.

Is Express js still used 2021?

Express is currently, and for many years, the de-facto library in the Node. js ecosystem. When you are looking for any tutorial to learn Node, Express is presented and taught to people. In the latest State of JS survey, Express was TOP 1 for all categories.


1 Answers

You can use express-http-proxy.

And yes, proxying is the accurate term for what you are looking for. It will underneath forward the request to another url, as the API will also imply.

Here's an example usage:

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
    }
}))
like image 164
Elod Szopos Avatar answered Oct 05 '22 23:10

Elod Szopos