No description
Find a file
2015-09-08 20:28:47 +01:00
scripts convenience scripts and nix updates 2015-07-30 08:09:29 -06:00
servant Run of update-nix-files.sh 2015-09-08 20:28:47 +01:00
servant-blaze Run of update-nix-files.sh 2015-09-08 20:28:47 +01:00
servant-cassava Run of update-nix-files.sh 2015-09-08 20:28:47 +01:00
servant-client Run of update-nix-files.sh 2015-09-08 20:28:47 +01:00
servant-docs Run of update-nix-files.sh 2015-09-08 20:28:47 +01:00
servant-examples Run of update-nix-files.sh 2015-09-08 20:28:47 +01:00
servant-js Run of update-nix-files.sh 2015-09-08 20:28:47 +01:00
servant-lucid Run of update-nix-files.sh 2015-09-08 20:28:47 +01:00
servant-mock Run of update-nix-files.sh 2015-09-08 20:28:47 +01:00
servant-server Run of update-nix-files.sh 2015-09-08 20:28:47 +01:00
.ghci added servant/.ghci 2014-10-31 15:49:05 +01:00
.gitignore convenience scripts and nix updates 2015-07-30 08:09:29 -06:00
.stylish-haskell.yaml Contributing 2015-08-17 23:50:42 +02:00
.travis.yml make travis builds use stack 2015-09-06 09:04:55 -07:00
HLint.hs Contributing 2015-08-17 23:50:42 +02:00
README.md README: typo 2015-09-07 09:53:46 -07:00
servant.png Update READMEs 2015-04-20 15:48:37 +02:00
sources.txt Add servant-cassava. 2015-08-29 19:15:16 +02:00
stack-ghc-7.8.4.yaml make travis builds use stack 2015-09-06 09:04:55 -07:00
stack.yaml Merge pull request #207 from haskell-servant/jkarni/cassava 2015-09-07 12:29:47 -07:00

servant

Build Status Coverage Status

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 a servant webservice.
  • servant-docs, which lets you generate API docs for your webservice.
  • servant-js, which lets you derive Javascript functions (using vanilla JS ajax requests, angular or jquery) to query your API's endpoints, in the same spirit as servant-client.
  • servant-blaze and servant-lucid provide easy HTML rendering of your data as an HTML 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.

Contributing

Contributions are very welcome! To hack on the github version, clone the repository. You can use cabal:

./scripts/start-sandbox.sh # Initialize the sandbox and add-source the packages
./scripts/test-all.sh      # Run all the tests

stack:

stack build    # Install and build packages
stack test     # Run all the tests

Or nix:

./scripts/update-nix-files.sh   # Get up-to-date shell.nix files

Though we aren't sticklers for style, the .stylish-haskell.yaml and HLint.hs files in the repository provide a good baseline for consistency.

Please include a description of the changes in your PR in the CHANGELOG.md of the packages you've changed. And of course, write tests!