Skip to content

Mount express controllers to routes automatically / Express 自动路由(DEPRECATED)

License

Notifications You must be signed in to change notification settings

kenberkeley/express-auto-routes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Express Auto Routes

NPM version Downloads build status Dependency Status Coverage Status

中文介绍请点击 这里

In most of the time, we need to mount handlers / controllers to routes manually.

e.g.

/** now we are in routes/index.js **/
var homeRouter = require('./home/'),
  userCtrl = require('../controllers/user');

// Method 1: mount a sub router to a path. kinda code splitting but still complicated
app.use('/', homeRouter);

// Method 2: mount controllers to routes one by one, sucks
app.get('/user', userCtrl.index);
app.post('/user/login', userCtrl.login);
app.get('/user/logout', userCtrl.logout);
...

It's hardly elegant, so here comes express-auto-routes.
Firstly, npm install express-auto-routes --save

e.g.

/** now we are in app.js **/
var path = require('path'),
  express = require('express'),
  app = express();

var autoRoutes = require('express-auto-routes')(app); // you don't need `routes` folder any more
autoRoutes(path.join(__dirname, './controllers')); // auto mounting... done!

// ...other configures

app.listen(8080);
/** now we are in controllers/hello/world.js **/
exports.get = function (req, res, next) {
  res.send('hello world');
};

Then visit localhost:8080/hello/world, you will see hello world


The magic is just globbing all the valid controller files and resolve them based on relative path.
Since we glob files recursively, without doubt it supports unlimited sub folders.

e.g.

controllers/a/b/c/d/e/f/g.js => localhost:8080/a/b/c/d/e/f/g

Here I highly recommend you checking out the example/ folder for more detail.

> npm install
> npm run example

[AutoMount] use /home/
[AutoMount] use /user/
[AutoMount] use /user/logout/
[AutoMount] all /user/setting/
[AutoMount] get /home/foo/bar/world/
[AutoMount] get /user/setting/:uid
[AutoMount] delete /user/logout/:uid
[AutoMount] get /home/foo/hello/
[AutoMount] get /home/foo/bar/
[AutoMount] get /user/logout/
[AutoMount] get /user/:uid?
[AutoMount] get /home/foo/
[AutoMount] get /home/xyz/
[AutoMount] post /setting
[AutoMount] get /login
[AutoMount] get /home/
[AutoMount] post /login
[AutoMount] put /user/
[AutoMount] post /log
[AutoMount] get /

then visit localhost:8080 and test the above APIs with Postman


[ A more practical project ] checkout A Simple Message Board RESTful API which based on this package.

About

Mount express controllers to routes automatically / Express 自动路由(DEPRECATED)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published