0.1.6 • Published 6 months ago

nulla-router v0.1.6

Weekly downloads
-
License
ISC
Repository
github
Last release
6 months ago

Nulla Router

A very fast HTTP router based in compact prefix tree, supports all http methods, route params and wildcards.

Install

  npm install nulla-router

Example

import http from 'http';
import Router from 'nulla-router';

const router = new Router();

router.get('/', (request, response) => response.end('Hello World'));

const server = http.createServer((request, response) => {
  router.lookup(request, response);
});

server.listen(5000);

API

Router Options

You can pass a route to handle not found routes.

const router = new Router({
  onNotFound: (request, response) => {
    response.statusCode = 404;
    response.end('Route not found :(');
  },
});

To enforces url patterns in routes, the path pattern is for normal paths and param is for parameters name, you can pass: camelCase, PascalCase, snake_case, kebab-case, any.

const router = new Router({
  patterns: {
    path: 'camelCase',
    param: 'camelCase',
  },
});

Register routes

To register new routes, supports all HTTP methods: GET, POST, PUT, PATCH, DELETE, HEAD, TRACE, CONNECT, OPTIONS.

router.on('GET', '/', (request, response) => response.end('Hello World'));

Also has the syntax sugar:

router.get('/', (request, response) => /* Your code */);

router.post('/', (request, response) => /* Your code */);

router.put('/', (request, response) => /* Your code */);

router.patch('/', (request, response) => /* Your code */);

router.delete('/', (request, response) => /* Your code */);

router.head('/', (request, response) => /* Your code */);

router.trace('/', (request, response) => /* Your code */);

router.connection('/', (request, response) => /* Your code */);

router.options('/', (request, response) => /* Your code */);

Parametric

router.get('/user/:id', (request, response, params) => {
  const { id } = params;
  response.end(`You id is: ${id}`);
});

Wildcard

router.get('/user/*', (request, response, params) => {
  const wildcard = params['*'];
  response.end(`The wildcard passed: ${wildcard}`);
});

Multiple routers

To use multiple routers you can merge them

const router = new Router();
router.get('/', (request, response) => response.end('Hello World'));

const userRouter = new Router();
userRouter.get('/', (request, response) => response.end('Hello World / user'));

router.merge(userRouter, '/user');

Acknowledgements

It is inspired by the Find My Way router.

0.1.6

6 months ago

0.1.4

1 year ago

0.1.3

1 year ago

0.1.5

1 year ago

0.1.1

1 year ago

0.1.0

1 year ago