Embed a raw 'Application' in a Servant API.
Please see README.md.
After servant-rawm
1.0.0.0, the implementation are divided into three packages: servant-rawm-server
, servant-rawm-client
, and servant-rawm-docs
.
You need to use either of the three implementations for the RawM
endpoint to function correctly.
Servant.RawM
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.
After servant-rawm
1.0.0.0, the implementations of the RawM
endpoint are divided into servant-rawm-client
, servant-rawm-docs
, and servant-rawm-server
to avoid introducing unnecessary dependencies and reduce the compilation overhead.
You will need to add either of the implementations to your dependencies, and import the corresponding implementation (Servant.RawM.Server
, Servant.RawM.Client
, or Servant.RawM.Docs
) for the RawM
endpoint to function correctly.
Example
There is code for an example server, client, and documentation located in servant-rawm-examples-and-tests/example/
. The following section describes how to run the example executables.
Building
The example executables can be built with the following command:
$ stack build servant-rawm-examples-and-tests
Server
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 servant-rawm-examples-and-tests/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.
Client
After building and running the server, 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.
Documentation
After building, the documentation can be generated like the following. This is documentation for the API defined in servant-rawm-examples-and-tests/example/Api.hs:
$ stack exec -- servant-rawm-example-docs
...