Suave is a simple web development F# library providing a lightweight web server and a set of combinators to manipulate route flow and task composition.

Download this project as a .zip file Download this project as a tar.gz file
View on GitHub

Suave + Paket = ♥

Working fully self-contained getting-started example for Suave Web Server scripting

Note you don’t need to have anything installed before starting with this script. Nothing but F# Interactive and this script.

This script fetches the Paket.exe component which is referenced later in the script. Initially the #r “paket.exe” reference is shown as unresolved. Once it has been downloaded by the user (by executing the first part of the script) the reference shows as resolved and can be used.

Paket is then used to fetch a set of F# packages, which are then used later in the script.

// Step 0. Boilerplate to get the paket.exe tool
 
open System
open System.IO
 
Environment.CurrentDirectory <- __SOURCE_DIRECTORY__
 
if not (File.Exists "paket.exe") then
    let url = "https://github.com/fsprojects/Paket/releases/download/0.31.5/paket.exe"
    use wc = new Net.WebClient()
    let tmp = Path.GetTempFileName()
    wc.DownloadFile(url, tmp)
    File.Move(tmp,Path.GetFileName url);;
 
// Step 1. Resolve and install the packages
 
#r "paket.exe"
 
Paket.Dependencies.Install """
frameworks: net46
source https://nuget.org/api/v2
nuget Suave
""";;
 
// Step 2. Use the packages
 
#r "packages/Suave/lib/net40/Suave.dll"
 
open Suave // always open suave
 
startWebServer defaultConfig (Successful.OK "Hello World!")