/express-router-js

express advanced routing system

Primary LanguageJavaScriptMIT LicenseMIT

express-router

express advanced routing system

it`s next level express routing system

Installation

first of all you must install the package

run this command first :

npm i express-router-js

How To Use

after you install the package you can require express routing system like this :

const express = require('express')
const app = express()
const port = 3000
const Router = require('express-router-js')();

Router.get('/' , (req , res , next) => {
    res.send('Hello World!');
});

Router.serve(app);

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`)
})

Define Route Group

You Have Route Group in Express from now

const express = require('express')
const app = express()
const port = 3000
const Router = require('express-router-js')()

const AuthMiddleware = (req , res , next) => {
    // check user is login
}

const AdminMiddleware = = (req , res , next) => {
    // check user is admin
}

Router.group((Router) => {

    // localhost:3000/articles
    Router.get('/' , (req, res) => {}) 

    // localhost:3000/articles/:articleId
    Router.get('/:articleId' , (req, res ) => {})

   // localhost:3000/articles/:articleId
    Router.patch('/:articleId' , (req, res ) => {})

       // localhost:3000/articles/:articleId/delete
    Router.delete('/:articleId' , (req, res ) => {})

}).prefix('articles').middleware([AuthMiddleware , AdminMiddleware]);


Router.serve(app);

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`)
})

Add Middlewares to Route/Route-Group

you can easily add your middlewares like this example :

Router.group((Router) => {
        Router.get('/' , (req, res) => {}).middleware(function(req , res , next) {})
}).middleware([function(req, res , next) {} , ...])
// Route group middleware will execute in All Route inside

Route Group in N-Level

you can define diffrent route groups inside toghter

Router.group((Router) => {
    
    Router.group((Router) => {
        Router.get('/' , (req , res , next) => {})
    }).prefix('videos');

    Router.group((Router) => {
        Router.get('/' , (req , res , next) => {})
    }).prefix('articles');

}).prefix('web').middleware([(req , res , next) => {} , ...]);

Naming Routes

you can set names on routes to easy access them from request

example:

Router.group((Router) => {

    // localhost:3000/user
    Router.get('/users' , (req, res) => {
        // this create an url to redirect
        let url = req.to_route('api.users.single' , { id : 2 });

    }).as('users.list')

    // localhost:3000/user/:id
    Router.get('/user/:id' , (req, res) => {
         // this create an url to redirect
        let url = req.to_route('api.users');

    }).as('users.single')

}).prefix('api').as('api');