为什么在Suave.Forms中没有与bindForm等效的bindQuery



我正在尝试用Suave.io编写一个网站,并有一个可以作为post或get请求提交的表单。我找到了一个如何将表单值绑定到dto的示例,但找不到如何将查询参数绑定到同一dto的方法。

let app : WebPart =
  choose
    [ path "/api" >>= GET >>= Binding.bindReq (bindQuery params_form) classify BAD_REQUEST
      path "/api/v2/" >>= POST >>= Binding.bindReq (bindForm params_form) classify BAD_REQUEST
      NOT_FOUND "Found no handlers" ]
startWebServer defaultConfig app

从0.32版本开始,没有任何内容。你必须自己做:

let withMyDTo fSuccess FFailure = 
    request ( fun r -> 
        let myValue1 = r.queryParam "val1"
        let myValue2 = r.queryParam "val2"
        match myValue1,myValue2 with 
        | Choice1Of2(v1),Choice1Of2(v2) -> fSuccess { val1:v1; val2:v2 }
        | _,_ -> FFailure
    )

choose [path "ddd" >>= withMyDTo doThat OhDoThatThen]

最新更新