読者です 読者をやめる 読者になる 読者になる

HTTP::RouterをWAFに組み込んでみた

Railsをインスパイアして、conf/routes.yamlをロードすると、以下のようなディスパッチテーブルを生成するWAFを、HTTP::Routerを使って作ってみた。

conf/routes.yaml

---
- type: resource 
  controller: Book

dispatch table

.-------------------------------------+------------+------------+------------.
| path                                | method     | controller | action     |
+-------------------------------------+------------+------------+------------+
| /Book                               | GET        | Book       | index      |
| /Book                               | POST       | Book       | create     |
| /Book/new                           | POST       | Book       | new        |
| /Book/{id}/edit                     | GET        | Book       | edit       |
| /Book/{id}                          | GET        | Book       | show       |
| /Book/{id}                          | PUT        | Book       | update     |
| /Book/{id}                          | DELETE     | Book       | destroy    |
'-------------------------------------+------------+------------+------------'

今作ってるAngelosというWAFもHTTP::Routerに移行させてみました。
Angelos::Dispatcher::RoutesとAngelos::Dispatcher::Routes::BuilderあたりみるとどのようにWAFにHTTP::Routerを組み込むのかがわかります。

http://github.com/dann/angelos/tree/master

Railsのdispatcher部分のコードを読んだので早速作ってみたというだけなんですが、Path::Dispatcherベースよりシンプルになっていいんじゃないかと思ってます。
Path::Dispatcherのほうがより複雑なルールの書き方ができるんですが、そこまでいらないよねというだけなんですが。

# WAFも年末あたりにもう少しコンセプトを固めて、作り込みたいですね。