Skip to content

PavelDeuce/router

Repository files navigation

router

Node CI Actions Status Maintainability Test Coverage

About

Lightweight library to provide an API for handling routes

Example

import buildRouter from '@hexlet/code';

const routes = [
  {
    path: '/courses/:course_id/exercises/:id',
    constraints: { id: /\d+/, course_id: (courseId) => courseId.startsWith('js') },
    handler: () => 'exercise!',
  },
];

const router = buildRouter(routes);
const result = router.serve({ path: '/courses/1/exercises/js' });
// { handler: [Function handler] , path: '/courses/1/exercises/js', params: { id: '1', course_id: 'js' }, method: 'GET' }
result.handler(result.params); // exercise!

router.serve('/courses/noop/exercises/noop'); // Error: No such path