Brings the power of Server.Transfer from C# to express

Usage no npm install needed!

<script type="module">
  import expressRequestTransfer from '';



Build Status NPM version Downloads Twitter Follow

The power of C# Server.Transfer for node/express req.transfer('/new-route', preserveData)

How 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 and Form Variables (optional)
  • you don't need the user to see the final URL in their browser


npm install --save express-request-transfer


var express = require('express');
var requestTransfer = require('express-request-transfer');

var app = express();

// add req.transfer method to all routes

// route 1
app.get('/api/time', function(req, res){
    res.send(new Date());

// route 2'/', function(req, res){

    // transfer request without form/query data

    // transfer request with incoming form/query data
    // req.transfer('/api/time', true);

If the user requested http://localhost route 2 would receive the request and switch code execution to route 1. The response from route 1 would be returned to the client. The users browser URL would be unchanged.


  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -m 'my new feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request


For change-log, check releases.