servant-rawm: Embed a raw 'Application' in a Servant API

[ bsd3, library, text ] [ Propose Tags ]

Please see

[Skip to Readme]
Versions [faq],,,,,,
Change log
Dependencies base (>=4.8 && <5), bytestring (>=0.10), filepath (>=1.4), http-client (>=0.5), http-media (>=0.6), http-types (>=0.9), lens (>=4.0), resourcet (>=1.0), servant, servant-client (>=0.16), servant-client-core (>=0.16), servant-docs (>=0.11.3), servant-rawm, servant-server (>=0.16), text, transformers, wai (>=3.2), wai-app-static (>=3.1), warp [details]
License BSD-3-Clause
Copyright 2017 Dennis Gosnell
Author Dennis Gosnell
Category Text
Home page
Source repo head: git clone
Uploaded by cdepillabout at Mon Sep 2 00:26:13 UTC 2019
Distributions LTSHaskell:, NixOS:
Executables servant-rawm-example-server, servant-rawm-example-docs, servant-rawm-example-client
Downloads 2337 total (157 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs available [build log]
Last success reported on 2019-09-02 [all 1 reports]


[Index] [Quick Jump]



Build a small example program


Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainer's Corner

For package maintainers and hackage trustees

Readme for servant-rawm-

[back to package description]


Build Status Hackage Stackage LTS Stackage Nightly BSD3 license

servant-rawm provides a way to embed a WAI Application in a Servant handler. It is more convenient and powerful than the Raw type provided by servant.

See the Haddocks on Hackage for servant-rawm for an explanation of how to use the RawM type.


There is code for an example server, client, and documentation located in example/. The following section describes how to run the example executables.


The example executables can be built with the following command:

$ stack build --flag servant-rawm:buildexample


After building, the server can be run with the following command:

$ stack exec -- servant-rawm-example-server

This runs a server on port 8201 serving files in example/files/.

It can be accessed from curl like the following:

$ curl http://localhost:8201/serve-directory/foo.txt
This is an example text file.


After building, the client can be run like the following:

$ stack exec -- servant-rawm-example-client
Successfully got file ./example/files/foo.txt:

This is an example text file.


After building, the documentation can be generated like the following. This is documentation for the API defined in example/Api.hs:

$ stack exec -- servant-rawm-example-docs