Skip to content

dirext-js/dirext

Repository files navigation

DirextLogo

🚧 A lightweight routing solution for Node.js. 🚧 Build Status

Install dirext

npm i dirext-js

Initialize a new instance of dirext.

const Dirext = require('dirext-js');
const app = new Dirext();

Setting routes

Syntax in dirext is similar to Express.

method

Any uppercase valid HTTP method:

  • GET
  • POST
  • PUT
  • PATCH
  • DELETE
  • HEAD
  • CONNECT
  • OPTIONS
  • TRACE

url

Any endpoint. Dirext supports:

  • static - /home
  • parameters - /home/:user
  • nested parameters - /home/:user/posts/:id
  • queries - /home/?user
  • wildcards - /home/*

dirext.set(method, url, [...middleware])

Initializes a route based on a specific method. Returns itself.

app.set('GET', '/home', middlewareFunction, middlewareFunctionTwo);
app.set('POST', '/home', middlewareFunctionThree, middlewareFunctionFour);

dirext.use(url, [...middleware])

Initializes a route with middleware to execute regardless of the method. If no url is provided, it will be set as global middlware. Returns itself.

app.use('/', middlewareFunction);
app.use(globalMiddlewareFunction);

dirext.METHOD(url, [...middleware])

Utilizes dirext's own set method to set a method-specific route without passing in method as an argument. Returns itself.

app.get('/home', middlewareFunction);
app.post('/home/:user', userMiddlewareFunction);
app.delete('/home/:user/posts/:id', deletePostMiddleware);

dirext.find(method, url)

Finds all stored route-specific and global middleware, parameters, and queries, for a route. Returns an object with middleware, params, and queries.

Middleware will be returned in an array in the order it was defined. Queries and Params will be returned in objects with key/value pairs.

app.use(globalMiddleware);
app.use('/home', homeMiddleware);
app.get('/home', getHomeMiddleware);
app.post('/home/:user', postUserMiddleware);
app.delete('/home/?user=user1/posts/:id', deleteMiddleware);

app.find('GET', '/home');
// -> { middleware: [globalMiddleware, homeMiddleware, getHomeMiddleware] }

app.find('POST', '/home/user1');
// -> { middleware: [globalMiddleware, postUserMiddleware], params: { user: user1 } }

app.find('DELETE', '/home/posts/2/?user=user1');
// -> { middleware: [globalMiddleware, deleteMiddleware], params: { id: 2 }, queries: { user: user1 } }

Creators

Sara Powers

Eli Gallipoli

Izumi Sato

Alex Kang

About

A lightweight routing solution for Node.js.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •