diff --git a/fsharp/suave/Program.fs b/fsharp/suave/Program.fs index 45dc1c4c806..05326556265 100644 --- a/fsharp/suave/Program.fs +++ b/fsharp/suave/Program.fs @@ -1,33 +1,22 @@ open Suave -open Suave.Filters -open Suave.Logging -open Suave.Operators -open System.Net +open Suave.Router -let app: WebPart = - choose - [ GET >=> choose - [ path "/" >=> Successful.OK "" - pathScan "/user/%s" (fun s -> Successful.OK s) ] - POST >=> path "/user" >=> Successful.OK "" ] +let getUser (ctx: HttpContext) = + match routeParam "id" ctx with + | Some idStr -> + Successful.OK idStr ctx + | None -> + RequestErrors.BAD_REQUEST "Missing user ID" ctx -type NoopLogger() = - interface Logger with - member this.name : string[] = [|"null-logger"|] - member this.logWithAck (logLevel : LogLevel) (logLevelWithMessage : (LogLevel -> Message)): Async = - async { - () - } - member this.log (loglevel : LogLevel) (logLevelWithMessage : (LogLevel -> Message)): unit = - () +let app : WebPart = router { + get "/" (Successful.OK "") + get "/user/:id" getUser + post "/user" (Successful.OK "") +} let config = { defaultConfig with bindings = - [ { scheme = HTTP - socketBinding = - { ip = IPAddress.Parse "0.0.0.0" - port = 3000us } } ]; - logger = NoopLogger()} + [ HttpBinding.createSimple HTTP "127.0.0.1" 3000 ];} startWebServer config app diff --git a/fsharp/suave/config.yaml b/fsharp/suave/config.yaml index 446c4d93e43..ad9bada833a 100644 --- a/fsharp/suave/config.yaml +++ b/fsharp/suave/config.yaml @@ -1,3 +1,3 @@ framework: website: suave.io - version: 2.6 + version: 3.2 diff --git a/fsharp/suave/web.fsproj b/fsharp/suave/web.fsproj index a38a3aefcfe..729e8767e6a 100644 --- a/fsharp/suave/web.fsproj +++ b/fsharp/suave/web.fsproj @@ -9,8 +9,7 @@ - - +