Connect ソースコードリーディング(6) - 組込み middleware 紹介
第6回目は、標準でバンドルされている組込み middleware の一挙に紹介します。API の詳細は公式サイトやソースコードを参照してもらうとして、ここでは概要レベルの詳細にします。
昨日紹介した TJ の記事に基づいて、フィルタとプロバイダの2つに分類してみました。
フィルタ系
- basicAuth
- Basic 認証機能を提供します。
- bodyParser
- POST データをパースして、req.body に設定します。
- compiler
- SASS, LESS を CSS に、CoffeeScript を JavaScript にコンパイルします。元データを変更すると再コンパイルされます。
- cookieParser
- Cookie をパースして、req.cookies に設定します。
- csrf
- limit
- リクエストデータのサイズに上限を設定します。リクエストのデータしずは 'Content-Length' ヘッダーから取得します
- logger
- リクエストを指定したフォーマットで出力します。デフォルトではレスポンス時間を出力するためにレスポンス時にログを出力しますが、immediate オプションを指定することで、リクエスト時にログを出力することもできます。
- methodOverride
- PUT, HEAD, DELETE を送信できないクライアント(主にブラウザ)からの HTTP メソッドを 'X-HTTP-Method-Override' ヘッダーで指定されたメソッド名で上書きします
- profiler
- レスポンス時間、メモリの使用量などのプロファイル情報をコンソールに出力します。res.end メソッドの proxy を設定するため、一番最初に use するようにしてください。
- query
- クエリパラメータをパースし、req.query に Object として設定します。ネストパラメータに対応するために、url.parse でパースした後に、qs.parse で再パースしています。
- responseTime
- res.writeHead メソッドを proxy し、X-Response-Time レスポンスヘッダにレスポンス時間を設定します。
- session
- vhost
- VirtualHost 機能を提供します。指定したホスト名でアクセスがあった場合、指定した connect.HTTPServer のインスタンスへ処理を委譲します。
connect( connect.vhost('foo.com', connect.createServer(...middleware...) ), connect.vhost('bar.com', connect.createServer(...middleware...) ) );
プロバイダ系
- directory
- 指定したディレクトリ配下のファイルをツリー形式で表示します。
- errorHandler
- エラーが発生した場合に、エラーページを送信します。設定により、スタックトレースを出力することもできます。
- favicon
- router
- Express のようなルーティング機能を提供します。
- static
- 静的ファイルをレスポンスとして返します。
- staticCache
- 静的ファイルをメモリ上にキャッシュして、ヒットした場合はファイルを読み込まずに返します。static に依存していて、処理としては static 内で req.emit('static') を呼んでいる箇所があり、これを staticCache の req.on('static', function() ...) で受け、キャッシュを返すようになっています。