servant-snap-0.9.0: A family of combinators for defining webservices APIs and serving them

Safe HaskellNone



This module defines a sever-side handler that lets you serve static files.

  • serveDirectory lets you serve anything that lives under a particular directory on your filesystem.


serveDirectory :: MonadSnap m => FilePath -> Server Raw context m Source #

Serve anything under the specified directory as a Raw endpoint.

type MyApi = "static" :> Raw

server :: Server MyApi
server = serveDirectory "/var/www"

would capture any request to /static/<something> and look for <something> under /var/www.

It will do its best to guess the MIME type for that file, based on the extension, and send an appropriate Content-Type header if possible.

If your goal is to serve HTML, CSS and Javascript files that use the rest of the API as a webapp backend, you will most likely not want the static files to be hidden behind a /static/ prefix. In that case, remember to put the serveDirectory handler in the last position, because servant will try to match the handlers in order.