Description
Route to different middlewares based on the incoming Accept header.
Description
Please see the README on Github at https://github.com/athanclark/wai-middleware-content-type#readme
README.md
wai-middleware-content-type
Route middlewares based on the incoming Accept
HTTP header, and other hints like the file extension (foo.txt
) of the route requested.
Usage
This package provides many combinators for turning various data types into the response you'd expect. For instance, blaze-html gives us strictlyHtml
data, right? We can be sure to only respond with Html
-compatible requests with our toolset:
import Network.Wai.Middleware.ContentType
import Network.Wai.Trans
myMiddleware :: MiddlewareT (ReaderT Env m)
contentTypeRoutes :: Monad m =>
FileExtListenerT urlbase (Status -> ResponseHeaders -> Response) m ()
contentTypeRoutes = do
blaze myBlazeResponse
cassius myCassiusResponse
text myTextResponse
contentMiddleware :: Monad m => MiddlewareT m
contentMiddleware app req respond =
fileExtsToMiddleware $
mapResponse (\f -> f status200 []) contentTypeRoutes
This library was designed for use with nested-routes, but it's all good if you want to use it separately.