express-request-transfer
v2.0.0
Published
Brings the power of Server.Transfer from C# to express
Downloads
907
Maintainers
Readme
express-request-transfer
Server.Transfer in C# allows an incoming request to one route, to be transfered to another without using 30x redirects (saving a client/server roundtrip). This module brings the same feature to express:
req.transfer('/new-route', true) // true = include form and query dataHow is this different from res.redirect?
Use res.redirect('/new-route') when:
- you want to redirect the request to another server
- you don't care about additional round-trips to the server
- you don't need to preserve Query String and Form Variables
- you want the user to see the new redirected URL (and maybe bookmark it)
Use req.transfer('/new-route', preserveData) when:
- you want to transfer current request to another URL on the same server
- you want to reduce server load by avoiding unnecessary round-trips
- you want to preserve Query String, Form Variables & Cookies (optional)
- you don't need the user to see the final URL in their browser
Installation
npm install --save express-request-transferUsage
var express = require('express');
var requestTransfer = require('express-request-transfer');
var app = express();
// add req.transfer method to all routes
app.use(requestTransfer);
// route 1
app.get('/api/time', function(req, res){
res.send(new Date());
});
// route 2
app.post('/', function(req, res){
// transfer request without form/query data
req.transfer('/api/time');
// transfer request with incoming form/query data
// req.transfer('/api/time', true);
});If a user requests http://localhost, route 2 receives the request and switches code execution to route 1. The response from route 1 is returned to the client, and the user's browser URL remains unchanged.
Notes
- Responses are transferred for text, JSON, binary payloads, and rendered views
- For security, transfers only allow internal route paths
- Transfer requests timeout after 30s by default. Override with
EXPRESS_REQUEST_TRANSFER_TIMEOUT_MS
Contributing
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature - Commit your changes:
git commit -m 'my new feature' - Push to the branch:
git push origin my-new-feature - Submit a pull request
History
For change-log, check releases.
