Express proxy middleware to forward request to another host and pass response back
$ npm install express-http-proxy --save
var proxy = require('express-http-proxy');
var app = require('express')();
app.use('/proxy', proxy('www.google.com', {
forwardPath: function(req, res) {
return require('url').parse(req.url).path;
}
}));
If you only want to proxy get request
app.use('/proxy', proxy('www.google.com', {
filter: function(req, res) {
return req.method == 'GET';
},
forwardPath: function(req, res) {
return require('url').parse(req.url).path;
}
}));
You can also intercept the response get by proxy before send it back to the client, or change the request options before it get sent to target:
app.use('/proxy', proxy('www.google.com', {
forwardPath: function(req, res) {
return require('url').parse(req.url).path;
},
intercept: function(data, req, res, callback) {
data = JSON.parse(data.toString('utf8'));
callback(null, JSON.stringify(data));
},
decorateRequest: function(req) {
req.headers['Content-Type'] = '';
req.method = 'GET';
req.bodyContent = wrap(req.bodyContent);
return req;
}
}));
MIT