What is express-http-proxy?
The express-http-proxy package is a middleware for Express.js that allows you to easily proxy HTTP requests to another server. It is useful for creating APIs that aggregate data from multiple sources, handling cross-origin requests, and more.
What are express-http-proxy's main functionalities?
Basic Proxying
This feature allows you to proxy requests from your Express server to another server. In this example, any request to '/proxy' will be forwarded to 'http://example.com'.
const express = require('express');
const proxy = require('express-http-proxy');
const app = express();
app.use('/proxy', proxy('http://example.com'));
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
Customizing Proxy Requests
This feature allows you to customize the path of the proxied request. In this example, any request to '/proxy' will be forwarded to 'http://example.com/api' with the original request URL appended.
const express = require('express');
const proxy = require('express-http-proxy');
const app = express();
app.use('/proxy', proxy('http://example.com', {
proxyReqPathResolver: function(req) {
return '/api' + req.url;
}
}));
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
Handling Proxy Responses
This feature allows you to modify the response from the proxied server before sending it back to the client. In this example, the word 'example' in the response body is replaced with 'sample'.
const express = require('express');
const proxy = require('express-http-proxy');
const app = express();
app.use('/proxy', proxy('http://example.com', {
userResDecorator: function(proxyRes, proxyResData, userReq, userRes) {
return proxyResData.toString('utf8').replace('example', 'sample');
}
}));
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
Other packages similar to express-http-proxy
http-proxy-middleware
http-proxy-middleware is a popular middleware for creating proxies in Express.js. It offers more advanced features like path rewriting, logging, and WebSocket support. Compared to express-http-proxy, it provides more flexibility and is more actively maintained.
node-http-proxy
node-http-proxy is a low-level HTTP proxy library for Node.js. It provides a lot of customization options and can be used to create complex proxy servers. While it is more powerful, it requires more setup and configuration compared to express-http-proxy.
express-proxy
express-proxy is another middleware for proxying HTTP requests in Express.js. It is simpler and less feature-rich compared to express-http-proxy, making it suitable for basic proxying needs.
express-http-proxy
Express proxy middleware to forward request to another host and pass response back
Install
$ npm install express-http-proxy --save
Usage
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;
}
}));
Licence
MIT