/express-request-transfer

Transfer requests without redirects (aka Server.Transfer in C#)

Primary LanguageJavaScriptISC LicenseISC

express-request-transfer

Build Status NPM version Twitter Follow

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 data

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

Installation

npm install --save express-request-transfer

Usage

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 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.

Contributing

  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

History

For change-log, check releases.