Recipe: Rate limiting

Goal: Cap requests per minute on a public API.

open Suave
open Suave.Filters
open Suave.Operators
open Suave.Successful
open Suave.RateLimit

let app = choose [
  path "/api/public"
    >=> rateLimit (perMinute 10) (OK "public data")
  path "/health" >=> OK "ok"
]

startWebServer defaultConfig app

Full guide: Rate limiting.