A JSON REST API https://github.com/tfausak/hairy
|Latest on Hackage:||0.1.3|
This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow stackage.org to host generated Haddocks.
Hairy is a JSON REST API built in Haskell. It uses Scotty to create a WAI application served by the Warp web server. The Aeson library handles encoding and decoding JSON, while Persistent manages the PostgreSQL database. Hairy features an Hspec test suite and Criterion benchmarks.
The entire project is meant to be easy to build, understand, and use. It doesn't really do anything useful, but it shows how to do anything at all. Take a look at the literate source to see how it all works.
Add it to your Cabal file:
library build-depends: hairy ==0.1.*
Or install it manually:
$ cabal update $ cabal install hairy-0.1.3
This package uses Semantic Versioning.
First create a database user for Hairy.
$ createuser --createdb postgres
Then create databases for each environment.
$ psql --username postgres --command 'CREATE DATABASE hairy_development' $ psql --username postgres --command 'CREATE DATABASE hairy_production' $ psql --username postgres --command 'CREATE DATABASE hairy_test'
Then just start the server!
$ hairy # => http://localhost:3000
Hairy can be configured through environment variables.
To configure the environment, use the
SCOTTY_ENV environment variable.
Possible environments include
$ env SCOTTY_ENV=Production hairy
To configure the port, use the
PORT environment variable.
$ env PORT=8080 hairy
To configure the database, use the
DATABASE_URL environment variable.
$ env DATABASE_URL=postgres://postgres:postgres@localhost:5432/hairy_development hairy
- Added the ability to change the port using the
- Added the ability to configure the database through the
- Added support for GHC 7.6.
- Added support for aeson 0.8, criterion 1.0, and transformers 0.4.
Switched PostgreSQL username from "taylor" to "postgres".
- Initially committed.