0.1.6 • Published 2 years 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-routerExample
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.