No description
e83397a1db
This change adapt the auth combinator example to the new router code. In general, the server interpretation of user-written combinators will be affected by the new routing code. The change here also introduces a change in functionality: previously, wrong authentication triggered a "hard failure", whereas we now trigger a "soft failure", which is recoverable. For the simple example, this does not make a lot of difference. In general, I think having a soft failure is the right option to take here, although we want a more general story about the relative priorities of different error codes. |
||
---|---|---|
scripts | ||
servant | ||
servant-blaze | ||
servant-client | ||
servant-docs | ||
servant-examples | ||
servant-jquery | ||
servant-lucid | ||
servant-server | ||
.ghci | ||
.gitignore | ||
.travis.yml | ||
README.md | ||
servant.png | ||
sources.txt |
servant
These libraries provides a family of combinators to define webservices and automatically generate the documentation and client-side querying functions for each endpoint.
In order to minimize the dependencies depending on your needs, we provide these features under different packages.
servant
, which contains everything you need to declare a webservice API.servant-server
, which lets you implement an HTTP server with handlers for each endpoint of an API.servant-client
, which lets you derive automatically Haskell functions that let you query each endpoint of aservant
webservice.servant-docs
, which lets you generate API docs for your webservice.servant-jquery
, which lets you derive Javascript functions (based on jquery) to query your API's endpoints, in the same spirit asservant-client
.servant-blaze
andservant-lucid
provide easy HTML rendering of your data as anHTML
content-type "combinator".
Tutorial
We have a tutorial guide that introduces the core types and features of servant. After this article, you should be able to write your first servant webservices, learning the rest from the haddocks' examples.