Router class

A shelf Router routes requests to handlers based on HTTP verb and route pattern.

import 'package:shelf_router/shelf_router.dart';
import 'package:shelf/shelf.dart';
import 'package:shelf/shelf_io.dart' as io;

var app = Router();

// Route pattern parameters can be specified <paramName>
app.get('/users/<userName>/whoami', (Request request) async {
  // The matched values can be read with params(request, param)
  var userName = request.params['userName'];
  return Response.ok('You are ${userName}');
});

// The matched value can also be taken as parameter, if the handler given
// doesn't implement Handler, it's assumed to take all parameters in the
// order they appear in the route pattern.
app.get('/users/<userName>/say-hello', (Request request, String userName) async {
  assert(userName == request.params['userName']);
  return Response.ok('Hello ${userName}');
});

// It is possible to have multiple parameters, and if desired a custom
// regular expression can be specified with <paramName|REGEXP>, where
// REGEXP is a regular expression (leaving out ^ and $).
// If no regular expression is specified `[^/]+` will be used.
app.get('/users/<userName>/messages/<msgId|\d+>', (Request request) async {
  var msgId = int.parse(request.params['msgId']!);
  return Response.ok(message.getById(msgId));
});

var server = await io.serve(app, 'localhost', 8080);

If multiple routes match the same request, the handler for the first route is called. If no route matches a request, a Response.notFound will be returned instead. The default matcher can be overridden with the notFoundHandler constructor parameter.

Available extensions
Annotations
  • @sealed

Constructors

Router({Handler notFoundHandler = _defaultNotFound})
Creates a new Router routing requests to handlers.

Properties

hashCode int
The hash code for this object.
no setterinherited
plus RouterPlus

Available on Router, provided by the RouterPlusExtension extension

Upgrades the shelf Router to RouterPlus
no setter
runtimeType Type
A representation of the runtime type of the object.
no setterinherited

Methods

add(String verb, String route, Function handler) → void
Add handler for verb requests to route.
all(String route, Function handler) → void
Handle all request to route using handler.
call(Request request) Future<Response>
Route incoming requests to registered handlers.
connect(String route, Function handler) → void
Handle CONNECT request to route using handler.
delete(String route, Function handler) → void
Handle DELETE request to route using handler.
get(String route, Function handler) → void
Handle GET request to route using handler.
Handle HEAD request to route using handler.
mount(String prefix, Handler handler) → void
Mount a handler below a prefix.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
options(String route, Function handler) → void
Handle OPTIONS request to route using handler.
patch(String route, Function handler) → void
Handle PATCH request to route using handler.
post(String route, Function handler) → void
Handle POST request to route using handler.
put(String route, Function handler) → void
Handle PUT request to route using handler.
toString() String
A string representation of this object.
inherited
trace(String route, Function handler) → void
Handle TRACE request to route using handler.

Operators

operator ==(Object other) bool
The equality operator.
inherited

Static Properties

routeNotFound Response
Sentinel Response object indicating that no matching route was found.
final