2.0.0 • Published 10 years ago

express-routeloader v2.0.0

Weekly downloads
2
License
ISC
Repository
github
Last release
10 years ago

Express-routeloader

travis NPM version Codeship Status for cullophid/express-routeloader

This is originally a fork of Livedocs-routeloader. Some credit goes to Simon Mcmannus

Basics

Express-routeloader makes it easy to handle endpoints for your REST server. Express-routeloader builds an express router from your ./routes folder.

when given a directory structure like

routes
    - groups.js

where groups is

exports.read = {
    handler : function (req, res) {
        res.send(200);
    }
};
exports.create = {
    handler : function (req, res) {
        res.send(200);
    }
};

Express-routeloader will create a router with the following routes:

POST /groups
GET /groups/:id

You can use multiple routers in the same project which is really useful for maintaining multiple versions of an api.

Routeloader

The routeloader works as a simple router of express:

'use strict';

var express = require('express'),
    app = express(),
router = require('express-routeloader')({/* option */});

app.use(router);

app.listen(3000);

options

rootDir: The directory containing your routes. Defaults to ./routes

logger: Logging function. default : console.log

hideCRUD : Should CRUD endpoints have the extentions be hidden. GET assets/read/:id becomes `GET assets/:id. Defaults to true.

verbMap: Json object mapping filenames to default HTTP verbs. default :

{
    "create": "POST",
    "read": "GET",
    "list" : "GET",
    "search" : "GET",
    "update": "PUT",
    "delete": "DELETE"
}

prefix: prefix for all loaded routes e.g. /api/v1/. this is very useful for maintaining multiple versions of an api.

Routes

routing endpoints are node modules that export a set of objects with a method handler:

'use strict' // Ofc we are running strict!
exports.hello = {
    handler :function (req, res, next) {
        res.send('world');
    }
};

You can overwrite default settings by adding properties to the exported object:

'use strict' // Ofc we are running strict!

exports.hello = {
    url = '/different/route/to/:id',
    method = 'PUT',
    middleware = [func1, func2, func3],
    handler : function (re, res, next) {
        res.send('World');
    }
};

validation

Express-routeloader lets you use json-schema to validate the input to your endpoints. to add validation simply add the schema to the module.

'use strict' // Ofc we are running strict!

exports.hello = {
    url = 'update/:id',
    method : 'POST',
    params =  {
        required : ['id'],
        properties : {
            handler : {
                type : 'integer',
                minimum : 0
            }
        }
    },
    query = {
        properties : {
            someOption : {
                type : 'boolean'
            }
        }
    },
    body = {
        properties : {
            name : {
                type : 'string',
                maxLength : 80
            }
        }
    },
    handler : function (req, res, next) {
        // do an update
        res.send('world');
    }
};

Promises

Express route validator supports promises. If a route handler returns a promise, routeloader with call res.send on promise resolution and next on rejection.

2.0.0

10 years ago

1.2.1

10 years ago

1.2.0

10 years ago

1.1.0

10 years ago

1.0.0

10 years ago

0.2.14

11 years ago

0.2.13

11 years ago

0.2.11

11 years ago

0.2.10

11 years ago

0.2.9

11 years ago

0.2.8

11 years ago

0.2.7

11 years ago

0.2.6

11 years ago

0.2.5

11 years ago

0.2.4

11 years ago

0.2.3

11 years ago

0.2.2

11 years ago

0.2.1

11 years ago

0.2.0

11 years ago

0.1.1

11 years ago

0.0.2

11 years ago

0.1.0

11 years ago