0

例如,路由器计算表达式中的以下代码

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

在什么情况下这些会有所不同?

4

1 回答 1

1

您可以提供任何HttpHandlerto forward,因此您看到这种行为并不让我感到惊讶。forward真正有用的地方是将整个子嵌套routers在某个路径根下。在这种情况下,转发确保子路径下的路由仅在路由的子部分上匹配。

例如,采用以下设置:

let routerA = router {
 get "/foo" (text "hi")
}

let routerB = router {
 forward "/hi" routerA
}

在这种情况下,routerA get 方法的完整路径将是/hi/foo,而不是/foo

于 2019-05-15T16:23:03.957 回答