Saturday, 2 January 2016

Haskell REST API on Google App Engine

Overview

The following describes an example project that creates a REST API using Haskell as a GAE custom runtime component.

The component is built using Scotty a lightweight web framework and makes use of the Aeson library to marshal to and from Json.

The API describes a simple TODO application with a list of items held in memory and is an extension of work by Sean Hess.

All the code for the project may be found at: https://github.com/andywhardy/haskell-gae


Prerequisites

  • To run locally you must have Haskell and Stack installed on your operating system.  
  • To upload to GCP you must have editor rights to a GCP project and have the gcloud tool installed and available on your path.
For further information on installing Haskell or Stack for your OS please see:

https://www.haskell.org/platform/
http://docs.haskellstack.org/en/stable/README.html

The following may be useful info for setting up GCP:

https://cloud.google.com/compute/docs/projects
https://cloud.google.com/sdk/gcloud/

Guide


Clone project from git

git clone https://github.com/andywhardy/haskell-gae

Setup

cd haskell-gae
stack setup

Build

stack build

Run

stack exec haskell-gae

Local test

http://localhost:8080/items
http://localhost:8080/items/1
http://localhost:8080/items/2

Deploy

gcloud preview app deploy --promote --version test-1 app.yaml

GAE test

https://haskell-gae-rest-dot-<YOUR_PROJECT_ID>.appspot.com/items