Silk a récemment rendu open-source un framework REST pour Haskell nommé "rest". Il fournit un DSL permettant de définir des services REST qui peuvent ensuite fonctionner avec les frameworks web populaires comme happstack. "rest" offre également des fonctionnalités comme les URLs type-safe, l'abstraction du support de format-type et une séparation propre entre les spécifications de l'API et la logique métier.
rest comprend 3 composants principaux :
- rest-core : un DSL permettant de définir des ressources REST versionnées
- rest-gen : un générateur automatique de documentation et de clients d'API rest pour Haskell, JavaScript et Ruby
- rest-snap, rest-happstack et rest-wai : les drivers permettant de faire tourner les ressources sur les serveurs web correspondants
Il y a également d'autres paquets comme rest-client, rest-types, json-schema, generic-aeson, etc., qui sont utilisés par rest et qui peuvent être utilisés avec celui-ci. Vous en saurez plus en consultant l'annonce de publication.
Les frameworks web Haskell populaires fournissent déjà le support des fonctionnalités comme les URLs type-safe, le routage, les templates, etc. Le principal avantage de rest est qu'il permet de séparer les responsabilités de la logique business et de la définition de l'API comme le routage, la lecture/sérialisation des formats d'entrées/sorties et formats supportés pour une ressource particulière. Pour cela, il fournit un certain nombre de constructeurs "intelligents" que vous pouvez utiliser pour encapsuler vos fonctions fortement typées.
Pour en apprendre plus et commencer à utiliser rest, vous pouvez suivre ce tutoriel.