0.1.6 • Published 6 months ago
nulla-router v0.1.6
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.