FinchRoute class

Defines a web route configuration for HTTP request handling in the application. The FinchRoute class represents a single route definition that specifies how incoming HTTP requests should be matched and handled. It supports advanced routing features including pattern matching, HTTP method filtering, host/port restrictions, nested routing, authentication, and authorization. Key features:

  • Path pattern matching with wildcards (/api/*) and parameters (/users/{id})
  • HTTP method restrictions (GET, POST, PUT, DELETE, etc.)
  • Host and port-based routing for multi-tenant applications
  • Nested route hierarchies for organized route structures
  • Integration with authentication and authorization systems
  • Controller-based and function-based request handling
  • Widget/template rendering capabilities
  • API documentation generation support Example usage:
// Simple route
WebRoute(
  path: '/users',
  methods: [RequestMethods.GET],
  index: () async => 'User list',
)
// Parameterized route with authentication
WebRoute(
  path: '/users/{id}',
  methods: [RequestMethods.GET, RequestMethods.PUT],
  auth: UserAuthController(),
  permissions: ['user.read', 'user.edit'],
  controller: UserController(),
)
// Nested route structure
WebRoute(
  path: '/api',
  children: [
    WebRoute(path: '/users', controller: UserApiController()),
    WebRoute(path: '/posts', controller: PostApiController()),
  ],
)
Implementers
Available extensions

Constructors

FinchRoute({required String path, String? key, List<String> extraPath = const [], List<String> methods = const [Methods.GET], Controller? controller, String widget = "", Future<String> index()?, AuthController? auth, List<FinchRoute> children = const [], Map<String, Object?> params = const {}, String title = '', List<String> excludePaths = const [], Future<ApiDoc>? apiDoc()?, List<String> permissions = const [], List<String> hosts = const ['*'], List<int> ports = const [], List<Middleware> middlewares = const []})
Creates a FinchRoute instance with the specified parameters.

Properties

apiDoc ↔ Future<ApiDoc>? Function()?
Function to generate API documentation for this route.
getter/setter pair
auth ↔ AuthController?
An optional AuthController for handling authentication and session checks for this route.
getter/setter pair
children ↔ List<FinchRoute>
Sub-routes of the current route, defining a tree structure of routes.
getter/setter pair
controller ↔ Controller?
The controller associated with this route. This is an instance of Controller that will handle the request for this route.
getter/setter pair
excludePaths ↔ List<String>
Paths that should not be included in all sub-paths of /*.
getter/setter pair
extraPath ↔ List<String>
Additional main paths for this route. This allows for multiple matching paths.
getter/setter pair
hashCode → int
The hash code for this object.
no setterinherited
hosts ↔ List<String>
The primary hostname constraints for this route.
getter/setter pair
index ↔ Future<String> Function()?
A function representing the main controller function to load for this route. This is typically used to render the index of the controller.
getter/setter pair
key ↔ String?
Key of routes of the current route, defining a tree structure of routes.
getter/setter pair
methods ↔ List<String>
List of HTTP methods allowed for this route. For example, POST, GET, HEAD, etc.
getter/setter pair
middlewares ↔ List<Middleware>
getter/setter pair
params ↔ Map<String, Object?>
Default variable parameters to use in the content.
getter/setter pair
parent ↔ FinchRoute?
getter/setter pair
path ↔ String
The primary path of the route. For example, /test or /test/*. If using /test/*, it will match all sub-paths under /test.
getter/setter pair
permissions ↔ List<String>
Permissions required for this route. Authentication is needed to use these permissions.
getter/setter pair
ports ↔ List<int>
The port number constraints for this route.
getter/setter pair
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
title ↔ String
The title of the page, which can be used as {{ $e.pageTitle }}.
getter/setter pair
widget ↔ String
Path to the widget to be loaded as content for this route.
getter/setter pair

Methods

allowMethod(String method) → bool
Validates if the current HTTP request method is allowed for this route.
cache({Duration cacheDuration = const Duration(minutes: 10), List<CacheParam> cacheType = const [CacheParam.method, CacheParam.path], CacheSource cacheSource = CacheSource.memory}) → RouteCache

Available on FinchRoute, provided by the FinchRouteExtension extension

Wraps the current FinchRoute with a RouteCache to enable response caching.
getFullPath() → String
getPathRender() → String
Gets the path after rendering.
getUrl(Request rq, [Map<String, Object?> params = const {}, Map<String, Object?> queries = const {}]) → String
handleMiddlewares() → Future<bool>
middleware(Middleware middleware) → FinchRoute
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
setPathRender(String path) → void
Sets the rendered path for this route.
toDetails() → Map<String, Object?>
toMap(String parentPath, bool hasAuth, String method) → List<Map>
Converts the route to a list of maps representing its details.
toString() → String
A string representation of this object.
inherited

Operators

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

Static Methods

getByKey(String key) → FinchRoute?
getPath(String key) → String
makeList({required List<String> paths, List<String> extraPath = const [], List<String> methods = const [Methods.GET], Controller? controller, Future<String> index()?, AuthController? auth, List<String> permissions = const [], String widget = "", Map<String, Object?> params = const {}, String title = "", List<String> excludePaths = const [], List<FinchRoute> children = const [], Future<ApiDoc>? apiDoc()?, List<String> hosts = const ['*'], List<int> ports = const [], String? key, List<Middleware> middlewares = const []}) → List<FinchRoute>
Creates multiple FinchRoute instances with shared configuration.