ライブラリ/フレームワークごとのURL書き換え

mod_rewriteを使うとこんな感じ。「httpd.conf」に記述します。

#httpd.conf
RewriteRule ^\/todo\/([0-9]+)? /todo.do?id=$1

JavaのURL書き換え用ライブラリ「Url Rewrite Filter」では「/WEB-INF/urlrewrite.xml」で一元管理して書き換えます。

<rule>
    <from>todo/(.*)$</from>
    <to type="forward">todo.do?id=$1</to>
</rule>

Ruby on Railsでは設定「config/routes.rb」で一元管理して書き換えます。

# config/routes.rb
ActionController::Routing::Routes.draw do |map|
  map.connect '/todo/:id', :controller => "todo", :action=> "show"
end

Cubbyではアクションクラスにアノテーションで定義します。定義は各アクションクラスに分散して一元管理することはできません。その代わりMaven2でURLの一覧をドキュメントとしてを出力する機能を用意する予定です。

// action/TodoAction.java
public class TodoAction extends Action {
  public String id;
  @Url("/todo/{id}")
  public ActionResult show() {
    System.out.println(id);
    ...
  }
}

RailsCubbyは「実行するコントローラークラスにマッピング」する仕組みなので、正確にはURLを自由に書き換えることができるわけではありませんが、アプリで使うレベルではこれで十分なんじゃないかと思います。

ほかのフレームワークではどんな感じなんですかねー?