F#Saturn框架:“获取”和“前进”之间有什么区别?

时间:2019-05-15 15:48:35

标签: f# saturn-framework

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

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,就会显示当前时间。

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

1 个答案:

答案 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