express-simplefile-router v0.0.1
express-simplefile-router
Transparent and simple filesystem-based router for Express.
Think how easy it is to create new routes in PHP and how obvious is the list of routes for a typical project? This is what I wanted in Express.
Synopsis
npm install express-simplefile-routerCreate
api-handlers/user/hello.get.jsin your project:
module.exports = (req, res) => {
res.send("Hello world");
};- Mount routes in your
server.js:
const expressSimpleFileRouter = require('express-simplefile-router');
const app = express();
// ...
app.use(
'/api/',
expressSimpleFileRouter({
directory: 'api-handlers'
})
);
const server = app.listen(1111);- Now you have a
GETmethod handler on/api/user/hello/:
user:~$ curl http://localhost:1111/api/user/hello/
Hello worldDocumentation
expressSimpleFileRouter()
Basically expressSimpleFileRouter() traverses a directory of files and mounts them as routes on an instance of Express.router(). Simple as that.
It accepts two deconstructed arguments:
directory(required) which directory to travel looking for files ending in.post.js,.get.js,.delete.js,.put.jsor.patch.jsand mounting them as routes;prefix(default'/') string to prepend to all route paths when mounting onExpress.router();
Route handler files
Every route handler file is a node module. Whatever you module.exports is supplied as second argument to Express.router() mount method (.post(), .get(), etc). So you can export either a standard handler (req, res) => {..., or an array of such. See test/one/two.get.js for the latter example.
Route handler file names are mapped to their route paths. I.e. api/auth/user.post.js becomes route /api/user/ that handles POST methods.
Development and maintenance
Tests: npm run test or mocha test.js.
Liner: npm run lint or eslint index.js.
TODO
- Imagine a simple way to handle REST arguments (
/user/123) - Write jsdoc for
index.js - Collect developers' feedback
- Publish JSONHandler and ValidateSchema and add write docs for them all
Footer
Author: Egor Egorov me@egorfine.com. License: MIT
5 years ago