例如,以下代码在路由器计算表达式中
get "/time" (warbler (fun _ -> System.DateTime.Now.ToString("HH:mm:ss") |> sprintf "Time now is %s" |> text))
似乎具有与
完全相同的效果forward "/time" (warbler (fun _ -> System.DateTime.Now.ToString("HH:mm:ss") |> sprintf "Time now is %s" |> text))
在两种情况下,只要客户导航到/time
,就会显示当前时间。
在什么情况下这些会有所不同?
答案 0 :(得分:0)
您可以向HttpHandler
提供任何forward
,因此看到这种行为并不奇怪。 forward
真正有用的地方是将整个子routers
嵌套在某个路径根下。在这种情况下,forward确保子路径下的路由仅在该路由的子部分上匹配。
例如,进行以下设置:
let routerA = router {
get "/foo" (text "hi")
}
let routerB = router {
forward "/hi" routerA
}
在这种情况下,routerA get方法的完整路径将是/hi/foo
,而不是/foo
。