Skip to content

Instantly share code, notes, and snippets.

@jamsesso
Created August 30, 2014 20:24
Show Gist options
  • Star 9 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save jamsesso/cc60d0d0fd920b2810c6 to your computer and use it in GitHub Desktop.
Save jamsesso/cc60d0d0fd920b2810c6 to your computer and use it in GitHub Desktop.
Versioned API routing example
var express = require('express');
var http = require('http');
var app = express();
// Simple user controller implementation.
var users = [
{ username: 'jamsesso', age: 20, gender: 'M' },
{ username: 'bettycrocker', age: 20, gender: 'F' }
];
// Version 1 (Old)
function findUser(req, res) {
res.json(users[req.params.id]);
}
// Version 2 (New & improved)
function findUser2(req, res) {
if(!users.hasOwnProperty(req.params.id)) {
res.send(404);
}
else {
res.json(users[req.params.id]);
}
}
// Set up the routing.
var v1 = express.Router();
var v2 = express.Router();
v1.use('/user', express.Router()
.get('/:id', findUser));
v2.use('/user', express.Router()
.get('/:id', findUser2));
app.use('/v1', v1);
app.use('/v2', v2);
app.use('/', v2); // Set the default version to latest.
// Setup server.
http.createServer(app).listen(8081, function () {
console.log('Magic is happening on port 8081');
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment