Silkは先頃,"rest"という名称のHaskell用RESTフレームワークをオープンソースにした。happstackなどの一般的なWebフレームワーク上で動作させることが可能な,RESTサービス定義用のDSLを提供する。タイプセーフなURL,フォーマット形式の抽象化サポート,API仕様とビジネスロジックの明確な分離といった機能も備える。
restはおもに3つのコンポーネントで構成されている。
- rest-core: バージョン付きのRESTリソースを定義するADSL。
- rest-gen: restAPIからドキュメントとHaskell, JavaScript, Rubyクライアントを自動生成する。
- rest-snap, rest-happstack, rest-wai: 対応するWebサーバを使用してリソースを実行するためのドライバ。
その他にもrest-client, rest-types, json-schema, generic-aesonなどといった,restから,あるいはrestと合わせて利用可能なパッケージがある。これらの詳細については,発表資料で見ることができる。
Haskell で一般的なWebフレームワークには,タイプセーフなURLやルーティング,テンプレートといった機能をサポートするものがすでにある。restを利用する最大のメリットは,ルーティングや入出力フォーマットのパースあるいはシリアライズ,特定のリソースでサポートされている要求タイプといった,API定義に関連する部分からビジネスロジックを分離できることだ。これを実現するために,強い型付関数をラップする,さまざまな"スマート"コンストラクタが用意されている。
このチュートリアルで詳細を確認して,restを使ってみてほしい。