自由にURLをマッピングする仕様

3ヶ月ほど前より、cubby(カビー)というWebフレームワークを開発しています。

cubbyの特徴

・100% Pure JSP Web Application Framework
・Zero Configuration
・シンプル&スモール
・RESTっぽいURIをサポート(/agata/todo/1001)
・直感的な名前のタグライブラリ

cubbyの特徴にしたい機能のひとつに「RESTチックなURLを自由に使える」機能があります。今のところ次のような仕様を考えています。が、アノテーションの名前や、POSTをサポートする部分の仕様など、こんなもんでいいか悩んでいます。URLやRESTにこだわりのある方々、ご意見等々いただけるとすげーうれしいです。12月中には、このあたりをサポートしたバージョン「0.5」を出したいと思っています。

■1.デフォルトのURL(コントローラー名+アクションメソッド名)

public class TodoController extends Controller {

  // 「/todo/show」でアクセスできます。
  public ActionResult show() {
    ...
  }
}

■2.URIをデフォルトから変更する(@Url)

public class TodoController extends Controller {

  // アクションメソッド
  // 「/todo/view」でアクセスできます。
  @Url("view")
  public ActionResult show() {
    ...
  }
}


■3.正規表現によるUriからパラメータの変換(@Url(to={}))

public class TodoController extends Controller {

  // 「/{ユーザID}/todo/{TodoId}」でアクセスできます。
  //  ユーザID、TodoIdは「to」で指定した
  // 「userId」「todoId」というリクエストパラメータにセットされます。
  @Url(value="/([a-zA-Z0-9]+)/todo/([a-zA-Z0-9]+)", to={"userId","todoId"})
  public ActionResult show() {
    ...
  }
}

■4.POSTアクセスサポート(アクションメソッドの引数にPost)

public class TodoController extends Controller {

  // アクションメソッドの引数になにもないとGET/POSTの処理とみなす。
  // 「GET /{ユーザID}/todo/{TodoId}/edit」でアクセスできます。
  @Url(value="/([a-zA-Z0-9]+)/todo/([a-zA-Z0-9]+)/edit", to={"userId","todoId"})
  public ActionResult edit() {
    ...
  }
  // アクションメソッドの引数に「Post」オブジェクトがあるとPOSTの処理とみなす。
  // post自体には何の情報も持たない
  // 「POST /{ユーザID}/todo/{TodoId}/edit」でアクセスできます。
  @Url(value="/([a-zA-Z0-9]+)/todo/([a-zA-Z0-9]+)/edit", to={"userId","todoId"})
  public ActionResult edit(Post post) {
    ...
  }
}