Home

Awesome

rocky-version

HTTP API version based routing middleware using rocky + express + http-version

Usage

var express = require('express')
var rocky = require('rocky')
var version = require('http-version')

// Configure rocky proxies
var oldAPIProxy = rocky()
oldAPIProxy.forward('http://localhost:3001')
oldAPIProxy.all('/*')

var newAPIProxy = rocky()
newAPIProxy.forward('http://localhost:3002')
newAPIProxy.all('/*')

// create main app
var app = express()

// Configure the middlewares per specific version
app.use(version('1.0', oldAPIProxy.middleware()))
app.use(version('2.0', newAPIProxy.middleware()))

// Start the server
app.listen(3000)

// Test target servers
var oldAPIServer = express()
oldAPIServer.use(function (res, res) {
  res.end('Hello from old API')
})
oldAPIServer.listen(3001)

var newAPIServer = express()
newAPIServer.use(function (res, res) {
  res.end('Hello from new API')
})
newAPIServer.listen(3002)

Test it!

var request = require('supertest')

request('http://localhost:3000')
  .get('/test')
  .set('Version', '1.0')
  .expect(200, 'Hello from old API')
  .end(function (err) {
    if (err) {
      return console.error('Oops:', err)
    }
    console.log('Old API server success')
  })

request('http://localhost:3000')
  .get('/test')
  .set('Version', '2.0')
  .expect(200, 'Hello from new API')
  .end(function (err) {
    if (err) {
      return console.error('Oops:', err)
    }
    console.log('New API server success')
  })