路由
2025/11/7大约 1 分钟hyperlanewebrustusage-introductionrequest
静态路由
提示
hyperlane 框架支持静态路由(如果重复注册相同的静态路由,框架会抛出异常,程序退出运行),使用方法如下:
注册
struct Route;
server.route::<Route>("/test").await;动态路由
提示
hyperlane 框架支持动态路由(如果重复注册相同模式的动态路由,框架会抛出异常,程序退出运行),具体使用方法如下:
注册
提示
动态路由使用 {} 包裹,有两种写法
{key}内直接些字符串,则将匹配的value存入key对应的value中。{key:regex}则将正则表达式匹配的value存入key对应的value中,如果路径的最后是正则动态路由,则匹配后续所有路径,例如/test/{file:^.*$}匹配/test/a/b/c/d会成功,file的value为a/b/c/d。如果路径的最后不是正则动态路由,则仅使用正则匹配当前段的路由,例如/test/{file:^.*$}/b匹配/test/a/b会成功,file的value为a。
朴素动态路由
struct Route;
server.route::<Route>("/test/{text}").await;正则表达式动态路由
struct Route;
server.route::<Route>("/test/{number:\\d+}").await;获取全部动态路由参数
ctx.get_route_params().await;获取某个动态路由参数
ctx.get_route_param("text").await;获取路由匹配器
let route_matcher: RouteMatcher = server.get_route_matcher().await;获取所有路由的信息
let route_matcher: RouteMatcher = server.get_route_matcher().await;
for key in route_matcher.get_static_route().keys() {
println!("Static route: {key}");
}
for value in route_matcher.get_dynamic_route().values() {
for (route_pattern, _) in value {
println!("Dynamic route: {route_pattern}");
}
}
for value in route_matcher.get_regex_route().values() {
for (route_pattern, _) in value {
println!("Regex route: {route_pattern}");
}
}