使用 Suave 自定义动态响应?
Custom dynamic response with Suave?
我想用 Suave 构建一个简单的计数器。
[<EntryPoint>]
let main argv =
let mutable counter = 0;
let app =
choose
[
GET
>=> choose
[
path "/" >=> OK "Hello, world. ";
path "/count" >=> OK (string counter)
]
POST
>=> choose
[
path "/increment"
>=> (fun context -> async {
counter <- counter + 1
return Some context
})
]
]
startWebServer defaultConfig app
0
但是,使用我当前的解决方案,/count
处的计数永远不会更新。
我认为这是因为 WebPart
是在应用程序启动时计算的,而不是针对每个请求计算的。
在 Suave 中实现此目标的最佳方法是什么?
你假设 Webpart
s 是值,所以计算一次是正确的。 (参见 this)。
你需要使用闭包来得到你想要的:
path "/count" >=> (fun ctx ->
async {
let c = counter in return! OK (string c) ctx
})
我想用 Suave 构建一个简单的计数器。
[<EntryPoint>]
let main argv =
let mutable counter = 0;
let app =
choose
[
GET
>=> choose
[
path "/" >=> OK "Hello, world. ";
path "/count" >=> OK (string counter)
]
POST
>=> choose
[
path "/increment"
>=> (fun context -> async {
counter <- counter + 1
return Some context
})
]
]
startWebServer defaultConfig app
0
但是,使用我当前的解决方案,/count
处的计数永远不会更新。
我认为这是因为 WebPart
是在应用程序启动时计算的,而不是针对每个请求计算的。
在 Suave 中实现此目标的最佳方法是什么?
你假设 Webpart
s 是值,所以计算一次是正确的。 (参见 this)。
你需要使用闭包来得到你想要的:
path "/count" >=> (fun ctx ->
async {
let c = counter in return! OK (string c) ctx
})