New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

express-dry-router

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

express-dry-router

Express router for people who hate repeating themselves

  • 0.1.2
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
0
decreased by-100%
Maintainers
1
Weekly downloads
 
Created
Source

express-dry-router

build status

An express router for people who hate repeating themselves.

If we consider a typical route in an express app:

// app.js
var routes = require('./app/routes');

app.get('/admin/login', routes.admin.login);

// routes/index.js
exports.admin =  {
  login: function (req, res) {
    res.render('login', { pageTitle: 'Login'});
};

The name of the route is repeated three times - twice in app.js (/admin/login and routes.admin.login) and as part of the object hirearchy in in routes/index.js

Expess-dry-router allows you to describe routes with a single source of truth, the object hierarchy. The above example could be re-written like this:

// app.js
var routes = require('./app/routes');
var configureDryRoutes = require('express-dry-router');
 
configureDryRoutes(routes, app);
     
// routes/index.js
module.exports = {
    admin: {
        login: {
            get: function (req, res) {
                    res.render('login', { title: 'Login'});
            }
        }
    }
};

Example

This example demonstrates setting up routes with GET, PUT, POST and DELETE HTTP methods.

var express = require('express');
var http = require('http');
var configureDryRoutes = require('express-dry-router');

var app = express();

// all environments
app.set('port', process.env.PORT || 3000);
app.use(express.logger('dev'));
app.use(app.router);

var routes = {
    myapp: {
        resources: {
            ":id": {
                get: function (req, res) {
                   res.send("Retrieve a representation of " + req.params.id);
                },
                put: function (req, res) {
                    res.send("Replace " + req.params.id + ", or if it doesn't exist, create it.");
                },
                post: function (req, res) {
                    res.send("Not generally used.");
                },
                delete: function (req, res) {
                    res.send("Delete " + req.params.id);
                }
            },
            get: function (req, res) {
                res.send("List the URIs and perhaps other details of the collection's members.");
            },
            put: function (req, res) {
                res.send("Replace the entire collection with another collection.");
            },
            post: function (req, res) {
                res.send("Create a new entry in the collection. The new entry's URI is assigned automatically and is usually returned by the operation.");
            },
            delete: function (req, res) {
                res.send("Delete the entire collection.");
            }
        }
    }
};
configureDryRoutes(routes, app);

http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});

Opening http://localhost:3000/myapp/resources in a browser will cause a HTTP GET request to be sent to the server. The handler defined in rotues.myapp.resources.get will be called and "List the URIs and perhaps other details of the collection's members." will be returned in the HTTP response to the browser.

Opening http://localhost:3000/myapp/resources/item1 in a browser will cause a HTTP GET request to being sent to the server. The handler defined in rotues.myapp.resources.":id".get will be called and "Retrieve a representation of item1" will be returned in the HTTP response to the browser.

Creating a HTTP request with one of the other HTTP methods (PUT, POST and DELETE) will cause the corresponding handlers in the rotues object hierarchy to be called. This can be tested using the Dev HTTP Client in Chrome, for example.

Keywords

FAQs

Package last updated on 02 Apr 2014

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc