Ring周りについて頭を整理
「Clojure(Compojure)で作成したWEBアプリをGlassFishにデプロイ - oknknicの日記」に続き、ClojureによるWebアプリネタ。
デファクトである Ring について、頭を整理しておく。
Ring
- PythonのWSGIやRubyのRackにインスパイアされたWebアプリケーションライブラリ
- HTTPの詳細を抽象化するユニファイドAPIを提供
- Ringを用いて記述されたClojure Web Applicationは、Java Servlet へコンパイルできる
- war ファイルへのパッケージングもできる
- 多彩なミドルウェア(後述)が提供される
構成
- アダプタ:リクエストをClojureのmapにマッピングし、ハンドラに渡す
- ハンドラ:Webアプリケーションを定義する。リクエストを受け取り、レスポンスを返す
- ミドルウェア:ハンドラに機能を加える高階関数
リクエストの流れ:クライアント -> アダプタ -> ミドルウェア -> ハンドラ
レスポンスの流れ:ハンドラ -> ミドルウェア -> アダプタ -> クライアント
参考
Clojure Programming: Practical Lisp for the Java World (English Edition)
- 作者: Chas Emerick,Brian Carper,Christophe Grand
- 出版社/メーカー: O'Reilly Media
- 発売日: 2012/03/30
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
Clojure in Action: Elegant Applications on the JVM
- 作者: Amit Rathore
- 出版社/メーカー: Manning Publications
- 発売日: 2011/11/20
- メディア: ペーパーバック
- クリック: 24回
- この商品を含むブログ (2件) を見る