[CUBBY-84] @Pathで指定したURIの優先順位を明確にする Created: 2008-01-28  Updated: 2009-07-05  Resolved: 2008-01-30

Status: Closed
Project: Cubby
Component/s: Core
Affects Version/s: 1.0.0-RC1
Fix Version/s: 1.0.0-RC2

Type: Task Priority: Major
Reporter: baba Assignee: baba
Resolution: Fixed Votes: 0
Labels: None


 Description   

@Pathで指定したURIの優先順位を明確にします。

{id}

のようにパス埋め込まれたパラメータが少ない方からマッチングしていきます。

理由:

@Path("/foo/{identifier}")
public ActionResult method1() {
}

@Path("/foo/execute")
public ActionResult method2() {
}

のようなパスが定義された場合、method1の正規表現が"/foo/[a-zA-Z0-9]+"となって"/foo/execute"でアクセスしてもmethod1が実行される可能性があります。(現状では登録された順番にマッチングするので、どちらが呼ばれるか特定できない)

なので、パス埋め込まれたパラメータが少ない方からマッチングしていくことで少しでもパスが不安定になることを避けたいと思います。

"/foo/

{identifier}

"と"/foo/

{name}

"なんかだと、区別がつかないのでこれはムリ。



 Comments   
Comment by baba [ 2008-01-30 ]

対応しました。

リクエストされたパスを以下の順序でCubbyに登録されたアクションと比較していきます。

  • URI 埋め込みパラメータが少ない順
  • 正規表現の順 (String#compareTo())

また、URIの正規表現が同じで@Acceptで指定するHTTPメソッドに同じものがある場合は、アクションの登録時に例外が発生します。

Comment by agata [ 2008-01-29 ]

>それとも同じパスでHTTPメソッドが違うリクエストを許可する?

こちらは許可でおねがいします。
同じパスで、片方がGETとPOSTを認めて、片方がPOSTのみの場合は例外で。
パスとAcceptでユニークな感じ。

Comment by baba [ 2008-01-29 ]

登録されたパスの正規表現がかぶったら例外を出そうと思います。
で、パスの正規表現は同じでHTTPメソッド(POSTとかGETとか)が違う場合は例外をだす?
それとも同じパスでHTTPメソッドが違うリクエストを許可する?
どっちがいいでしょうか。

Generated at Wed Apr 24 13:00:02 JST 2024 using Jira 9.15.0#9150000-sha1:9ead8528714127d8cfabf2446010d7e62c0a195c.