路由指南
欢迎使用 Finch 路由指南!本指南将引导您完成在 Finch 应用程序中配置路由的步骤。无论您是经验丰富的开发人员还是刚刚起步,Finch 都提供了一套强大的工具来简化服务器端 Web 应用程序开发。
FinchRoute
FinchRoute 类用于在 Finch 应用程序中定义路由。它包含定义路由所需的所有属性。以下是使用示例:
FinchRoute(
path: '/',
index: () async => rq.renderString(text: 'Hello World'),
);
属性:
path:路由的路径。可以包含形式为{variableName}的变量。例如,/users/{id}。index:匹配路由时要调用的函数。应返回Future<String>。methods:路由应响应的 HTTP 方法。是一个String列表。例如,['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS', 'HEAD', 'CONNECT', 'TRACE']。controller:用于路由的控制器。应该是Controller的实例。children:当前路由的子路由。是一个FinchRoute列表。extraPath:路由的附加路径。是一个String列表。例如,['/home', '/index']。apiDoc:生成路由 API 文档的函数。应返回Future<ApiDoc>。auth:用于路由的身份验证控制器。应该是AuthController的实例。permissions:路由所需的权限。是一个String列表。例如,['admin']。widget:为路由渲染的小部件。应该是表示小部件路径的String。params:传递给小部件的默认参数。是一个Map<String, Object?>。title:页面标题。是一个String。excludePaths:要从路由中排除的路径。是一个String列表。hosts:路由应响应的主机。是一个String列表。例如,['example.com', 'www.example.com']。ports:路由应响应的端口。是一个int列表。例如,[80, 443]。
简单路由定义示例:
FinchRoute(
key: 'route.users',
path: '/users',
index: () async => rq.renderJson(data: {'message': 'Users list'}),
methods: Methods.ONLY_GET,
hosts: ['example.com'], // 或 ['*'] 表示所有主机
ports: [80, 443], // 或 [] 表示所有端口
);
使用控制器的路由示例:
FinchRoute(
key: 'route.users',
path: '/users',
controller: UserController(),
methods: Methods.ONLY_GET,
hosts: ['example.com'], // 或 ['*'] 表示所有主机
ports: [80, 443], // 或 [] 表示所有端口
);
具有子路由的路由示例:
FinchRoute(
key: 'route.users',
path: '/users',
controller: UserController(),
methods: Methods.ONLY_GET,
hosts: ['example.com'], // 或 ['*'] 表示所有主机
ports: [80, 443], // 或 [] 表示所有端口
children: [
FinchRoute(
key: 'route.users.show',
path: '/{id}',
index: () async => rq.renderJson(data: {'message': 'User details'}),
methods: Methods.ONLY_GET,
),
],
);
具有身份验证和权限的路由示例:
FinchRoute(
key: 'route.users',
path: '/users',
controller: UserController(),
methods: Methods.ONLY_GET,
hosts: ['example.com'], // 或 ['*'] 表示所有主机
ports: [80, 443], // 或 [] 表示所有端口
auth: AppAuthController(),
permissions: ['admin'],
);
AppAuthController 是一个扩展 AuthController 的类。您可以在 example 目录中找到它的示例。
API 路由
Finch 提供了一种方便的方式来定义 API 路由。您可以使用 FinchApp 的 /api 路径来定义 API 路由。以下是使用示例:
app.get(
path: '/api/users',
controller: UserController(),
);
参数路由
要在路径中定义参数,可以使用 {} 语法。例如,/users/{id}。您可以在 index 函数中使用 rq.get 方法访问参数。例如,rq.getParam('id')。