Slumber - An F# REST framework
Slumber is a small framework for creating REST applications in a functional style using F#, inspired heavily by the excellent OpenRasta.
The short, short version...
The wiki contains a more detailed overview of Slumber, but a short overview is given below.
Some business logic:
module People =
let getPeople () = ...
let getPerson (id : Int32) = ...
let createPerson (model : Person) = ...
let updatePerson (id : Int32) (model : Person) = ...
let search (term : String option) = ...
module Security =
let authenticate (req : Request) = ...
Configured in Slumber:
type Config () =
interface IContainerDescription with
member this.Describe baseUrl =
containerAt (relativeUrl baseUrl "/api")
|> authenticatedBy Security.authenticate true
|> with' (
endpointAt "/people"
|> named "people"
|> supporting (public' get People.getPeople)
|> supporting (post People.createPerson)
)
|> with' (
endpointAt "/people/search"
|> named "people-search"
|> supporting (public' get People.search)
)
|> with' (
endpointAt "/people/{id}"
|> named "person"
|> supporting (public' get People.getPerson)
|> supporting (put People.updatePerson)
)
|> reading MediaTypes.Text.Xml Xml.read
|> writing MediaTypes.Text.Xml Xml.write
|> reading MediaTypes.Application.Json Json.read
|> writing MediaTypes.Application.Json Json.write
|> forwarding MediaTypes.Text.Html MediaTypes.Text.Xml
Exposed as REST services:
GET http://localhost/app/people/search?term=Smith
=>
200 Ok
<people>
<person>
<name>John Smith</name>
<url>http://localhost/app/people/1</url>
</person>
<person>
<name>Jane Smith</name>
<url>http://localhost/app/people/2</url>
</person>
</people>
Working example
The Slumber solution contains a working example - details can be found here.
Quick links
Links to the main wiki pages: