2013-05-07

Node.js (express)で使うConnectみたいに使えるミドルウェアをつくる (UserAgent編)



express使ってて、Connectに代表されるbodyParser, session, cookiePerser, compress, errorHandlerみたいな、全ルート処理に対するfilterみたいな実装がしたくてメモ。
具体的に言うとuserAgent判別とか。

※あくまでやり方のメモ!実際の実装ではもっとちゃんとuseragent判定等を書く必要があります。

Connectって?


connect
https://github.com/senchalabs/connect

上記に書いたようなhttpServerの機能をexpressに提供してくれてるライブラリという認識。ひと通りnode.js入門してからgithub読めば大体分かる。readmeにMiddlewareに各種機能とその説明、ソースがある。

※参考
http://d.hatena.ne.jp/hokaccha/20110719/1311053590
hokaccha氏の読んでみた記事



何したいの?

express入門でおまじないのように書いてるapp.configure()内のapp.use()で使えるミドルウェアを自作します。



実装

使い方と作り方。使う方は適当です。

使う方


ミドルウェア(userAgent.js)


実際の処理はreturn function(req, res, next)辺りから始まって、next()を実行することで次のapp.use()のルート処理にexpressが引き継いでくれてる。

適当すぎて申し訳ないのだけど、ここではiPhone以外のUserAgentが来た時は302にstatusを変えてヘッダ変更後、next()しないでres.end()することでredirectしました。



0 件のコメント: