この章では、Clackミドルウェアを利用する上で最も一般的な使い方、「Clack.Builder」について話します。Clack.Builderはミドルウェアのwrapを順番に呼び、1つの関数(つまりアプリケーション)に組み上げます。
書き方は簡単です。
(builder ;; ここにミドルウェアを記述 #'app) ;=> 関数 (アプリケーション)
そして以下が実際のサンプルコードです。
(import 'clack.builder:builder)
(defun app (env)
(declare (ignore env))
'(200
(:content-type "text/plain")
("Hello, Clack!")))
(clack:clackup
(builder
<clack-middleware-session>
(<clack-middleware-static>
:path "/public/"
:root #p"/path/to/static-files/")
#'app))
<clack-middleware-session>はセッションを有効にするミドルウェアです。これを使うと、envの中に:clack.sessionというキーが追加され、セッションをハッシュテーブルとして扱うことができるようになります (Clack.Middleware.Sessionを参照)。
builderはwrapを下から上に呼び出すことに注意してください。この例では、#'appはまず<clack-middleware-static>に包まれ、次に<clack-middleware-session>に包まれます。
第7章で出てきた図を思い出してください。
この図の場合、外側のミドルウェアが<clack-middleware-session>で、内側が<clack-middleware-static>です。