Suave Namespace

Type/Module Description

ActiveConnection<'T>

Represents an active connection being processed

Authentication

Aux

BinaryFormatterSerialiser

Default JSON-based cookie serializer. NOTE: this implementation serializes `Map` polymorphically using the reflection-based `System.Text.Json` APIs. It is therefore NOT compatible with .NET Native AOT or aggressive trimming. Consumers targeting AOT must implement `CookieSerialiser` themselves over a closed payload schema (e.g. using a `JsonSerializerContext` source generator) and assign it to `SuaveConfig.cookieSerialiser`. The historical name `BinaryFormatterSerialiser` is preserved for source compatibility; the underlying engine has been `System.Text.Json` for a while.

ByteConstants

Compression

ConnectionFacade

ConnectionHealth

Connection health status

ConnectionHealthChecker

Module for monitoring and managing connection health

Control

Cookie

The cookie module is geared towards the server having the client store state but the client not being able to read that state.

CookieSerialiser

CORS

DotLiquid

A module for rendering DotLiquid template with Suave

Embedded

EventSource

A module that implements the Server-Sent Event specification, which can be read at www.w3.org/TR/eventsource.

Files

The files module can be used to serve from the file system. It encapsulates common patterns like verifying that back-symlinks or keywords aren't used to gain access outside the intended folder.

Filters

Module that deals with the applicatives of suave - use functions from this module to filter what requests a given route responds to. Functions have signature f :: params... -> HttpContext -> HttpContext option.

Globals

Headers

Hpack

HPACK compression format (largely coppied from Haskell's HTTP2 package)

Http

Http2

HttpOutput

HttpReader

Intermediate

Control-flow functions, such as 100 Continue and 101 Switching Protocol.

Json

Model

Operators

Proxy

RateLimit

Rate limiting module for Suave web server

Redirection

Functions have signature

f :: params... -> HttpContext -> Async<unit> option
Multiple items
type Async = static member AsBeginEnd: computation: ('Arg -> Async<'T>) -> ('Arg * AsyncCallback * obj -> IAsyncResult) * (IAsyncResult -> 'T) * (IAsyncResult -> unit) static member AwaitEvent: event: IEvent<'Del,'T> * ?cancelAction: (unit -> unit) -> Async<'T> (requires delegate and 'Del :> Delegate) static member AwaitIAsyncResult: iar: IAsyncResult * ?millisecondsTimeout: int -> Async<bool> static member AwaitTask: task: Task<'T> -> Async<'T> + 1 overload static member AwaitWaitHandle: waitHandle: WaitHandle * ?millisecondsTimeout: int -> Async<bool> static member CancelDefaultToken: unit -> unit static member Catch: computation: Async<'T> -> Async<Choice<'T,exn>> static member Choice: computations: Async<'T option> seq -> Async<'T option> static member FromBeginEnd: beginAction: (AsyncCallback * obj -> IAsyncResult) * endAction: (IAsyncResult -> 'T) * ?cancelAction: (unit -> unit) -> Async<'T> + 3 overloads static member FromContinuations: callback: (('T -> unit) * (exn -> unit) * (OperationCanceledException -> unit) -> unit) -> Async<'T> ...

--------------------
type Async<'T>
type unit = Unit
type 'T option = Option<'T>
.

Functions from here are 'end routes' in that they don't require you to keep returning applicatives, but can end up in an async monad/workflow that writes the data to the client in the end.

This class of status code indicates that further action needs to be taken by the user agent in order to fulfill the request. The action required MAY be carried out by the user agent without interaction with the user if and only if the method used in the second request is GET or HEAD. A client SHOULD detect infinite redirection loops, since such loops generate network traffic for each redirection.

RequestErrors

10.4 Client Error 4xx

The 4xx class of status code is intended for cases in which the client seems to have erred. Except when responding to a HEAD request, the server SHOULD include an entity containing an explanation of the error situation, and whether it is a temporary or permanent condition. These status codes are applicable to any request method. User agents SHOULD display any included entity to the user.

If the client is sending data, a server implementation using TCP SHOULD be careful to ensure that the client acknowledges receipt of the packet(s) containing the response, before the server closes the input connection. If the client continues sending data to the server after the close, the server's TCP stack will send a reset packet to the client, which may erase the client's unacknowledged input buffers before they can be read and interpreted by the HTTP application.

Response

The HTTP module has these main sub-modules:

  • Response - response and response_f functions.
  • Writers - ways to modify the response.
  • Intermediate - 100 and 101 response codes.
  • Successful- 2xx response codes.
  • Redirection - 3xx response codes.
  • RequestErrors - 4xx response codes.
  • ServerErrors - 5xx response codes.
  • Applicatives - use to filter down the request to something you want
  • Files - send files to the client
  • Authentication - Methods for authenticating http requests

and these main types:

  • WebResult = Async option
  • WebPart = HttpContext -> WebResult
  • HttpMethod

Router

Module for efficient HTTP routing with path parameter support

Runtime

ScanResult

SecurityHeaders

Security Headers module for comprehensive HTTP security header management

SelectFunction

SelectResult

ServerErrors

10.5 Server Error 5xx Response status codes beginning with the digit "5" indicate cases in which the server is aware that it has erred or is incapable of performing the request. Except when responding to a HEAD request, the server SHOULD include an entity containing an explanation of the error situation, and whether it is a temporary or permanent condition. User agents SHOULD display any included entity to the user. These response codes are applicable to any request method.

Sscanf

State

Stream

SuaveConfig (Module)

SuaveConfig (Type)

The core configuration of suave. See also Suave.Web.default_config which you can use to bootstrap the configuration: { default_config with bindings = [ ... ] }

Successful

2xx successful responses

Functions have signature

f :: params... -> HttpContext -> Async<unit> option
Multiple items
type Async = static member AsBeginEnd: computation: ('Arg -> Async<'T>) -> ('Arg * AsyncCallback * obj -> IAsyncResult) * (IAsyncResult -> 'T) * (IAsyncResult -> unit) static member AwaitEvent: event: IEvent<'Del,'T> * ?cancelAction: (unit -> unit) -> Async<'T> (requires delegate and 'Del :> Delegate) static member AwaitIAsyncResult: iar: IAsyncResult * ?millisecondsTimeout: int -> Async<bool> static member AwaitTask: task: Task<'T> -> Async<'T> + 1 overload static member AwaitWaitHandle: waitHandle: WaitHandle * ?millisecondsTimeout: int -> Async<bool> static member CancelDefaultToken: unit -> unit static member Catch: computation: Async<'T> -> Async<Choice<'T,exn>> static member Choice: computations: Async<'T option> seq -> Async<'T option> static member FromBeginEnd: beginAction: (AsyncCallback * obj -> IAsyncResult) * endAction: (IAsyncResult -> 'T) * ?cancelAction: (unit -> unit) -> Async<'T> + 3 overloads static member FromContinuations: callback: (('T -> unit) * (exn -> unit) * (OperationCanceledException -> unit) -> unit) -> Async<'T> ...

--------------------
type Async<'T>
type unit = Unit
type 'T option = Option<'T>
.

Functions from here are 'end routes' in that they don't require you to keep returning applicatives, but can end up in an async monad/workflow that writes the data to the client in the end.

Tcp

TcpServerFactory

TransferEncoding

Validation

Input Validation Framework for Suave

ValidationWebParts

WebPart helpers for input validation

Web

WebPart

WebSocket

Writers

Module that allows changing the output response in different ways. Functions have signature f :: params... -> HttpContext -> HttpContext.