What is a Router?

Routers capture the request by path and forwards it to a Controller using a link method for resolution or a linkFunction to implement middleware functionality to handle the request.

Here’s what it looks like:

final router = Router(); router.route('/path-1').link(() => Path1Controller());

router.route('/path-2').linkFunction((Request req) async {

return Response.ok('Hello, World!');

});

The path is passed as an argument when route() is invoked, and can also accept route parameters:

router.route('/path-1/:name').link(...);

router.route('/path-2/[:name]').linkFunction(...); // wrapping in square brackets means its optional

So with this snippet whatever is passed in the path segment after “/path-1” is captured in `name` path variable:

router.route('/path-1/:name').linkFunction((request) async {

final name = request.path.variables['name'];

return Response.ok('Hello, $name');

});

See how routers and controllers work in this video.

→ Get the source code