RelicRouter typedef

RelicRouter = Router<Handler>

Just a typedef for better auto-complete ///

Basic Routing

final router = Router<Handler>();

// Static routes
router.get('/', (req) {
  return Response.ok(
    body: Body.fromString('Home'),
  );
});

// Route with parameters
router.get('/users/:id', (req) {
  final id = req.pathParameters['id'];
  return Response.ok(
    body: Body.fromString('User $id'),
  );
});

// Multiple parameters
router.get('/posts/:year/:month/:slug', (req) {
  final year = req.pathParameters['year'];
  final month = req.pathParameters['month'];
  final slug = req.pathParameters['slug'];
  return Response.ok();
});

HTTP Methods

router.get('/users', (req) => /* list users */);
router.post('/users', (req) => /* create user */);
router.put('/users/:id', (req) => /* update user */);
router.patch('/users/:id', (req) => /* partial update */);
router.delete('/users/:id', (req) => /* delete user */);

Sub-routers

final apiRouter = Router<Handler>();
apiRouter.get('/users', (req) => /* users */);
apiRouter.get('/posts', (req) => /* posts */);

final mainRouter = Router<Handler>();
mainRouter.attach('/api', apiRouter);
// Results in: /api/users, /api/posts

Using with Pipeline

final handler = const Pipeline()
    .addMiddleware(routeWith(router))
    .addHandler(respondWith((_) => Response.notFound()));

Implementation

typedef RelicRouter = Router<Handler>;